patterns - Apache Camel: punto final "directo: inicio": ¿qué significa?
camel http (5)
Apache Camel direct es básicamente para enviar Exchange de una ruta a otra en el MISMO contexto Camel. 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. Entonces aquí necesitas crear un nuevo enrutador que tenga la siguiente descripción
from(“direct:populateHeaders”)
.setHeader(“myHeader”, “myHeaderValue”)
.end()
Y desde cualquier ruta puede enviar su objeto Exchange a esta ruta escribiendo
...
.to(“direct:populateHeaders”)
...
Es importante tener en cuenta que esto no funcionará en tu contexto de Camel.
Soy nuevo en Apache Camel. ¿Alguien puede explicar lo que significa "directo: inicio" en Camel? Por favor mira
from("direct:start")
.to("http://myhost/mypath");
Gracias.
Considérelo así: hay dos cosas cada vez que envía un mensaje a la ruta de camellos. 1. El esquema de URI, que define cómo se entregará su mensaje. Y a qué tipo de componente se va a entregar. 2. Ruta de URI, que define la instancia de ese componente.
Ahora, a su ubicación directa: inicio. ''direct'' dice que este mensaje debe enviarse sincrónicamente al Componente directo. ''start'' indica en qué instancia del Componente Directo debe entregarse este mensaje.
Importancia de la ruta diferente de URI: ahora considere si tiene que tener diferentes rutas. Y quiere producir mensajes de dos hilos diferentes de forma sincrónica. Usar ''directo: inicio'' como punto de inicio para las rutas no funcionará. A menos que tenga algún componente de procesamiento condicional, olvídelo si es principiante. Para entregar correctamente los mensajes en ambas rutas, deberá agregar 2 entradas, es decir, ''direct: somename1'' y ''direct: somename2''. ''comenzar'' no es algo obligatorio, puedes dar el nombre que quieras.
Te recomiendo que leas algunos capítulos de los libros EIP de Martin Fowler. Es un recurso maravilloso para comenzar. Esto hará que sea muy fácil de entender Camel.
El "directo: inicio" de arriba simplemente dice que la ruta comienza con un Componente Directo llamado "inicio".
El punto final directo proporciona la invocación síncrona de una ruta. Si desea enviar un Exchange
al terminal de inicio directo: start, crearía un ProducerTemplate
y usaría los diversos métodos de envío.
ProducerTemplate template = context.createProducerTemplate();
template.sendBody("direct:start", "This is a test message");
No hay nada especial sobre el nombre de start
. Es simplemente el nombre que usará cuando se refiera al punto final y podría haber sido fácilmente direct:foo
.
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>
direct: start proporciona formas sincrónicas para comunicarse entre 2 puntos finales y esto solo se usa si desea comunicarse utilizando mensajes camel y no archivos genéricos o mensajes xml.