2012-02-06 31 views
8

Siendo nuevo en Apache Camel, hace poco estaba revisando su larga lista de componentes y tropecé con su compatibilidad con los componentes SEDA queue.Queue ordinario frente a SEDA Queue

La página no tenía mucho sentido para mí, así que hice un par de búsquedas en línea del término "cola SEDA" y obtuve el artículo de la wikipedia here.

¡Después de leer ese artículo, no puedo decir cuál es la diferencia entre una cola SEDA y una cola normal y "normal"! Ambos adoptan la noción de sistemas de desacoplamiento a través del uso de colas asíncronas.

Según el artículo, "SEDA" simplemente suena como una arquitectura que consiste en colocar una cola entre cada componente. ¿Es esto correcto?

Pero si solo es una arquitectura, ¿por qué una cola "SEDA" es un componente especial de Apache Camel?

+3

SEDA implica un hilo adjunto a la cola como un ExecutorService (una cola y un grupo de subprocesos) Tal vez eso es lo que significa aquí. –

+0

No sé si la documentación se actualizó desde que se hizo esta pregunta, pero básicamente dice que en la primera línea: "El componente seda: proporciona un comportamiento SEDA asíncrono, de modo que los mensajes se intercambian en un BlockingQueue y se invoca a los consumidores _in un thread_ separado del productor ". – DavidS

Respuesta

4

Las colas SEDA son como una cola normal (y como dijo Peter anteriormente, en Camel tienen un grupo de subprocesos asociado a ellas como parte del componente). SEDA es una arquitectura. El componente SEDA en Camel utiliza colas en memoria en su proceso y son un componente separado para distinguirlos del otro componente de la cola en Apache camel, es decir, el componente JMS.

1

SEDA ofrece el desacoplamiento de los componentes en una sola ruta de camello. O para el caso en un solo proceso. . Lo que significa que lo ayuda a hacer llamadas asincrónicas a otros componentes ... es una cola de bloqueo de memoria. Por otro lado JMS se utiliza para el desacoplamiento de todo el sistema .. JMS tendrán un agente externo que participan .. SEDA simplemente willl crear un hilo separado del componente de consumo

3

SEDA es un acrónimo que significa Evento por etapas Driven Architecture está diseñado como un mecanismo para regular el flujo entre las diferentes fases del procesamiento de mensajes. La idea es suavizar la frecuencia de salida de mensajes de un proceso global para que coincida con la entrada. Permite que los hilos de consumidor de un enpoint descarguen el trabajo de las operaciones de larga ejecución al bakground, y así los liberan para consumir mensajes. del transporte. Cuando se pasa un intercambio a un punto final seda, se coloca en un BlockingQueue. La lista existe dentro del contexto de camello, lo que significa que solo estas rutas que están dentro del mismo contexto se pueden unir mediante este tipo de punto final. La cola no tiene límites por defecto, aunque puede modificarse configurando el atributo de tamaño en el URI del consumidor.

De manera predeterminada, un único subproceso asignado al punto final lee los intercambios fuera de la lista y los procesa a través de la ruta. Como se ve en el ejemplo de procedimiento, es posible aumentar el número de Consultores simultáneos para garantizar que los intercambios se procesen de esa lista de manera oportuna.

El patrón SEDA es el más adecuado para procesar los mensajes InOnly, donde una ruta finaliza el procesamiento y se pasa a otra para ocuparse de la siguiente fase. es posible solicitar una respuesta de seda: punto extremo al llamarlo cuando el patrón de intercambio de mensajes es InOut

Referencia. Libro de cocina del desarrollador Apache Camel