java routes apache-camel endpoint

java - Rutas de camello y puntos finales



routes apache-camel (2)

He estado estudiando detenidamente los documentos de Apache Camel para obtener una comprensión concreta de dos de sus conceptos más básicos (puntos finales y rutas), y aunque estos términos se usan en todas partes a través de los documentos, no puedo encontrar ninguna referencia que realmente defina lo que son y para que se usan. Y a pesar de que sus nombres son bastante obvios, y creo que entiendo lo que son, ahora me asignaron una tarea que me ha llevado hasta Apache Camel Land, y es absolutamente vital que entienda cuáles son estos mecanismos. son.

Mi conjetura es que un "punto final" es solo un bean, uno que puede configurarse en un archivo de configuración como cualquier otro, que asigna un nombre a un combo URI / puerto (esto se toma de la documentación del W3C). En el contexto de Apache Camel, supongo que los puntos finales se utilizan para conectar componentes entre sí, de modo que se pueden formar "rutas" (conexiones / mapas) entre ellos. Entonces, cuando el Componente A que vive en el Punto final 1 quiere comunicarse con el Componente B que vive en el Punto final 2, siempre que haya un mapeo de 1 a 2, Camel podrá transmitir mensajes entre estos dos.

¡Por favor deténganme y corríjanme si me equivoco aquí!

Así que ahora, he visto ejemplos en los que parece que las rutas se pueden configurar en Java:

from("endpointA").routeId("someMessage").to("endpointB");

Y he visto ejemplos en los que parece que las rutas se pueden configurar en XML:

<route id=""> <from .../> <to .../> </route>

¿Son estos dos métodos para configurar rutas, o son conceptos completamente diferentes?

Finalmente, ¿cuál es el formato de los mensajes que se pueden enrutar entre puntos finales? Si tiene que ser XML, por ejemplo, ¿cuál es el esquema / XSD de estos mensajes enrutados? Si tiene que ser un objeto Java, ¿qué límites / restricciones se aplican a los objetos que Camel puede enviar?


Parece que estás entendiendo bien el concepto. Creo que es útil pensar en los puntos finales en términos más abstractos. La documentación del camello no es de mucha ayuda aquí. Los puntos finales se pueden considerar como interfaces para un componente. Cada componente puede tener 1 o más puntos finales configurados. Me ayuda a pensar en los puntos finales dentro del contexto de una ruta. Una ruta simple puede ir desde el punto final A (esto podría ser una cola JMS, un zócalo tcp, un archivo o cualquier componente de camello) e ir al punto extremo B (que puede ser cualquier componente de camello). Por supuesto, también puede tener procesadores en la ruta que transforman los datos.

Los dos ejemplos de creación de ruta que da son solo eso, dos formas de crear una ruta. Son los ejemplos del mismo concepto. El primero es Java DSL y el segundo usa XML.

El formato de los mensajes suele ser XML, y el XML puede ser cualquier XML válido y no necesita estar vinculado a un XSD. El mensaje también puede ser cualquier objeto Java. Mientras permanezca en la JVM (es decir, sin pasar por un socket) no es necesario que se pueda serializar.


Ruta es una combinación ordenada de pasos de procesamiento

El punto final representa el comienzo o el final de una ruta (en su mayor parte), a la que otras rutas pueden conectarse como su inicio / fin o pueden volver a un sistema externo (por ejemplo, JMS, correo electrónico, etc.)