2012-03-09 23 views
36

Soy nuevo en Apache Camel. ¿Alguien puede explicar lo que significa "directo: inicio" en Camel? Por favor, vea Apache Camel: punto final "directo: inicio": ¿qué significa?

http://camel.apache.org/http

from("direct:start") 
.to("http://myhost/mypath"); 

Gracias.

+0

Tenga en cuenta que si está buscando una ruta para ejecutar una vez cuando camello se inicia, "directo: inicio" no es lo que está buscando - más información en inglés: http://stackoverflow.com/questions/7714211/apache -camel-triggering-a-task-on-startup-to-run-only-once – vikingsteve

Respuesta

40

El "directo: inicio" de arriba simplemente dice que la ruta comienza con un Direct Component llamado "inicio".

El punto final directo proporciona la invocación síncrona de una ruta. Si desea enviar un Exchange al punto final directo: inicio, creará un ProducerTemplate y usará los diversos métodos de envío.

ProducerTemplate template = context.createProducerTemplate(); 

template.sendBody("direct:start", "This is a test message"); 

No hay nada de especial en el nombre start. Es simplemente el nombre que usará cuando se refiera al punto final y podría haber sido fácilmente direct:foo.

+1

Gracias. Todavía no está claro para mí. Déjame ser más específico. ¿"Comenzar" tiene un significado especial o puede ser una cadena arbitraria "foo" o "algo así"? Segundo: en el contexto del ejemplo de HTTP que publiqué anteriormente, ¿qué significa? Gracias de nuevo. –

+0

Sin significado especial. Es solo el nombre que usará para referirse al punto final. Podría haber sido tan fácil como "directo: foo". – gregwhitaker

+0

Aquí está el [enlace a Direct] (http://camel.apache.org/direct.html) en el sitio de Camel –

2

direct: start proporciona formas sincrónicas de comunicación entre 2 puntos finales y esto solo se usa si desea comunicarse utilizando mensajes camel y no archivos genéricos o mensajes xml.

3

Supongamos que la ruta directa es un método con el nombre de inicio, por lo que debemos llamar al método de inicio/ruta directa para realizar ciertas operaciones. El siguiente ejemplo ayudará.

La primera ruta se activará cuando un archivo de entrada esté disponible en la ubicación XXXX y cuando llegue a la línea, el flujo real irá a la segunda ruta. Básicamente, la ruta directa desde el punto final será activada por un punto final productor.

<route id="fileRoute"> 
    <from uri="file:XXXX"> 
     .. 
    <to uri="direct:start"> 
</route> 

<route id="directStartRoute"> 
    <from uri="direct:start"> 
    <to uri="http://myhost/mypath"> 
</route> 
3

Apache Camel directa es básicamente para el envío de Exchange de una ruta a otra en el contexto Camel MISMO. Supongamos que recibe un mensaje de AMQ y desea completar los encabezados de cada mensaje que recibe y luego enviarlo a la lista de destinatarios de correo. Así que aquí es necesario crear nuevo router que ha siguiente descripción

from(“direct:populateHeaders”) 
.setHeader(“myHeader”, “myHeaderValue”) 
.end() 

Y a partir de cualquier ruta puede enviar su objeto de Exchange para esta ruta escribiendo

... 

.to(“direct:populateHeaders”) 

... 

Es importante tener en cuenta que esto no funciona desde su contexto Camel.

Cuestiones relacionadas