Tema JMS frente a colas

Me preguntaba cuál es la diferencia entre una cola JMS y un tema JMS.

Página de ActiveMQ dice

Temas

En JMS, un tema implementa publicar y suscribirse semántica. Cuando publica un mensaje, se envía 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

Implementa una cola JMS equilibrador de carga semántica. Un solo mensaje será recibido 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 de cerrar, el mensaje se volverá a enviar a otro consumidor. Una cola puede tener muchos consumidores con mensajes carga 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 el agente de ActiveMQ recibió el mensaje.

¿Alguna idea?

preguntado el 07 de abril de 11 a las 02:04

9 Respuestas

Eso significa que un tema es apropiado. Una cola significa que un mensaje va a un único suscriptor posible. Un tema va para todos y cada uno de los suscriptores.

Respondido 07 Abr '11, 09:04

¿Alguna idea de cómo funciona el equilibrio de carga para las colas en JMS o WSO2 MB? - Kulasangar

eso es interesante porque estaba tratando de depurar un suscriptor y al enviar un tema, no se llamó al suscriptor, pero al enviarlo a la cola funcionó. vmrvictor

Los temas son para el modelo de editor-suscriptor, mientras que las colas son para punto a punto.

Respondido el 03 de diciembre de 13 a las 16:12

Es tan simple como eso:

colas = Insertar> Retirar (enviar a un solo suscriptor) 1: 1

Temas = Insertar> Difusión (enviar a todos los suscriptores) 1: n

enter image description here

respondido 19 mar '19, 09:03

Un ejemplo puede ser una red social simple. A alguien le da "Me gusta" en una publicación. El backend publica un evento 'POST LIKE' al tema. Lo consumen 3 suscriptores: notificationProcessor (envía una notificación al cartel), karmaProcessor (da karma al aficionado y al cartel), feedProcessor (mueve una jota hacia arriba en los feeds de las personas). Todo de forma asincrónica, por supuesto. - Siddhartha

@Siddhartha, esta podría ser una respuesta envuelta en un ejemplo, ¡gracias! - SeleM

A Tema de JMS es el tipo de destino en un modelo de distribución de 1 a muchos. Todos los consumidores reciben el mismo mensaje publicado. suscriptores. También puede llamar a esto el modelo de 'transmisión'. Puedes pensar en un tema como el equivalente de un Asunto en una 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 "disparar y olvidar": si nadie escucha, el mensaje simplemente desaparece. Si eso no es lo que desea, puede utilizar 'suscripciones duraderas'.

A Cola JMS es un destino de mensajes 1 a 1. El mensaje es recibido por solo uno de los consumidores receptores (tenga en cuenta: usar constantemente suscriptores para 'tema del cliente y receptores para que el cliente de cola evite confusiones). Los mensajes enviados a una cola se almacenan en el disco o la memoria hasta que alguien los recoge o caduca. Por lo tanto, las colas (y las suscripciones duraderas) necesitan una administración de almacenamiento activa, debe pensar en consumidores lentos.

En la mayoría de los entornos, yo diría, 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 comienzo 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, acéptalo :-)

contestado el 15 de mayo de 17 a las 12:05

colas

Ventajas

  • Patrón de mensajería simple con un flujo de comunicación transparente
  • Los mensajes se pueden recuperar volviéndolos a poner en la cola

Desventajas

  • Solo un consumidor puede recibir el mensaje
  • Implica un acoplamiento entre productor y consumidor, ya que es una relación uno a uno.

Temas

Ventajas

  • Varios consumidores pueden recibir un mensaje
  • Desacoplamiento entre productor y consumidores (patrón de publicación y suscripción)

Desventajas

  • Flujo de comunicación más complicado
  • No se puede recuperar un mensaje para un solo oyente

Respondido el 10 de enero de 19 a las 06:01

En cuanto a la conservación del pedido, consulte esta página de ActiveMQ. En resumen: el orden se conserva para consumidores individuales, pero con varios consumidores, el orden de entrega no está garantizado.

Respondido 30 Jul 13, 13:07

Si tiene N consumidores, entonces:

Los temas JMS envían mensajes a N de N Colas JMS envían mensajes a 1 de N

Dijo que está "buscando tener una 'cosa' que envíe una copia del mensaje a cada suscriptor en la misma secuencia en la que el agente de ActiveMQ recibió el mensaje".

Por lo tanto, desea utilizar un tema para que todos los N suscriptores obtengan una copia del mensaje.

Respondido el 17 de enero de 15 a las 23:01

TEMA :: el tema es comunicación de uno a muchos ... (multipunto o publicar / suscribirse) EJ: -imaginar que un editor publica la película en el youtub y luego todos sus suscriptores recibirán una notificación ... QUEVE :: queve es uno a uno -Una comunicación ... Ej: -Cuando publique una solicitud de recarga, irá a un solo qreciever ... recuerde siempre que si la solicitud goto all qreceivers, entonces sucedieron múltiples recargas, por lo que mientras se desarrollaba analiza cuál es adecuado para una aplicación

Respondido el 10 de junio de 18 a las 16:06

La cola es un objeto gestionado de JMS que se utiliza para almacenar mensajes en espera de que los suscriptores los consuman. Cuando todos los suscriptores hayan consumido 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.

Respondido 07 Feb 14, 20:02

Los mensajes en cola solo se consumirán una vez por una soltero consumidor, es por eso que una cola implementa un equilibrador de carga. Las suscripciones a temas pueden ser duradero: el suscriptor puede recibir el mensaje mucho después de la publicación (si el suscriptor se cerró y vuelve a aparecer, por ejemplo). - Gruber

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.