Me preguntaba cuál es la diferencia entre una cola JMS y un tema JMS.
Temas
En JMS, un tema implementa la semántica de publicación y suscripción . Cuando publica un mensaje, va a todos los suscriptores que estén interesados, por lo que de cero a muchos suscriptores recibirán una copia del mensaje. Solo los suscriptores que tenían una suscripción activa en el momento en que el corredor recibe el mensaje recibirán una copia del mensaje.
Colas
Una cola JMS implementa la semántica del equilibrador de carga . Se recibirá un solo mensaje por exactamente un consumidor. Si no hay consumidores disponibles en el momento en que se envía el mensaje, se mantendrá hasta que haya un consumidor disponible que pueda procesar el mensaje. Si un consumidor recibe un mensaje y no lo reconoce antes del cierre, el mensaje se volverá a entregar a otro consumidor. Una cola puede tener muchos consumidores con carga de mensajes equilibrada entre los consumidores disponibles.
Quiero tener 'algo' que envíe una copia del mensaje a cada suscriptor en la misma secuencia en la que recibió el mensaje el agente de ActiveMQ.
¿Alguna idea?
Los temas son para el modelo editor-suscriptor, mientras que las colas son para punto a punto.
fuente
Un tema de JMS es el tipo de destino en un modelo de distribución de 1 a muchos. Todos los suscriptores consumidores reciben el mismo mensaje publicado . También puede llamar a esto el modelo de 'transmisión'. Puede pensar en un tema como el equivalente de un Sujeto en un patrón de diseño de Observador para computación distribuida. Algunos proveedores de JMS eligen implementar esto de manera eficiente como UDP en lugar de TCP. Para los temas, la entrega del mensaje es "dispara y olvida": si nadie escucha, el mensaje simplemente desaparece. Si eso no es lo que quieres, puedes usar 'suscripciones duraderas'.
Una cola JMS es un destino de mensajes 1 a 1. El mensaje es recibido solo por uno de los receptores consumidores (tenga en cuenta: el uso constante de los suscriptores para los clientes del tema y los receptores para los clientes de la cola evita la confusión). Los mensajes enviados a una cola se almacenan en el disco o la memoria hasta que alguien los recoge o caduca. Entonces, las colas (y las suscripciones duraderas) necesitan una gestión de almacenamiento activa, debe pensar en consumidores lentos.
Yo diría que en la mayoría de los entornos, los temas son la mejor opción porque siempre puede agregar componentes adicionales sin tener que cambiar la arquitectura. Los componentes agregados pueden ser monitoreo, registro, análisis, etc. Al principio del proyecto, nunca se sabe cuáles serán los requisitos en 1 año, 5 años, 10 años. El cambio es inevitable, abrácelo :-)
fuente
Es tan simple como eso:
fuente
notificationProcessor
(envía una notificación al afiche),karmaProcessor
(le da karma al aficionado y al afiche),feedProcessor
(mueve el jota hacia arriba en los feeds de las personas). Todo asíncrono por supuesto.En cuanto a la preservación del pedido, consulte esta página de ActiveMQ . En resumen: el pedido se conserva para consumidores individuales, pero con varios consumidores el pedido de entrega no está garantizado.
fuente
Colas
Pros
Contras
Temas
Pros
Contras
fuente
Si tiene N consumidores, entonces:
Los temas JMS entregan mensajes a N de N Las colas JMS entregan mensajes a 1 de N
Usted dijo que está "buscando tener una 'cosa' que enviará una copia del mensaje a cada suscriptor en la misma secuencia en la que recibió el mensaje el agente de ActiveMQ".
Por lo tanto, desea utilizar un tema para que todos los suscriptores de N reciban una copia del mensaje.
fuente
TEMA :: el tema es comunicación de uno a muchos ... (multipunto o publicación / suscripción) EJ: -imagine que un editor publique la película en el youtub y luego todos sus suscriptores recibirán una notificación ... QUEVE :: queve es one-to -una comunicación ... Ej .: -Cuando publique una solicitud de recarga, irá a un solo receptor q ... recuerde siempre que si la solicitud pasa a todos los receptores q, se produjo una recarga múltiple, así que al desarrollar el análisis es adecuado para una aplicación
fuente
La cola es un objeto administrado JMS que se utiliza para retener mensajes que esperan que los suscriptores consuman. Cuando todos los suscriptores consumieron el mensaje, el mensaje se eliminará de la cola.
El tema es que todos los suscriptores de un tema reciben el mismo mensaje cuando se publica el mensaje.
fuente