Eu queria saber qual é a diferença entre uma fila JMS e um tópico JMS.
Tópicos
No JMS, um Tópico implementa a semântica de publicação e assinatura . Quando você publica uma mensagem, ela é enviada a todos os assinantes interessados - portanto, zero a muitos assinantes receberá uma cópia da mensagem. Somente assinantes que tinham uma assinatura ativa no momento em que o broker recebe a mensagem obterão uma cópia da mensagem.
Filas
Uma fila JMS implementa a semântica do balanceador de carga . Uma única mensagem será recebida por exatamente um consumidor. Se não houver consumidores disponíveis no momento em que a mensagem é enviada, ela será mantida até que um consumidor esteja disponível para processar a mensagem. Se um consumidor receber uma mensagem e não a reconhecer antes de fechar, a mensagem será devolvida a outro consumidor. Uma fila pode ter muitos consumidores com carga de mensagens equilibrada entre os consumidores disponíveis.
Eu quero ter 'algo' que enviará uma cópia da mensagem para cada assinante na mesma sequência em que a mensagem foi recebida pelo broker do ActiveMQ.
Alguma ideia?
Os tópicos são para o modelo de publicador-assinante, enquanto as filas são para ponto a ponto.
fonte
Um tópico JMS é o tipo de destino em um modelo de distribuição de 1 para muitos. A mesma mensagem publicada é recebida por todos os assinantes consumidores . Você também pode chamar isso de modelo 'broadcast'. Você pode pensar em um tópico como o equivalente a um Assunto em um padrão de design do Observer para computação distribuída. Alguns provedores JMS optam eficientemente por implementá-lo como UDP em vez de TCP. Para os tópicos, a entrega da mensagem é "dispara e esquece" - se ninguém ouvir, a mensagem desaparecerá. Se não é isso que você deseja, você pode usar 'assinaturas duráveis'.
Uma fila JMS é um destino de mensagens 1 para 1. A mensagem é recebida por apenas um dos receptores consumidores (observe: o uso consistente de assinantes para 'tópico clientes e receptores' para o cliente da fila evita confusão). As mensagens enviadas para uma fila são armazenadas no disco ou na memória até que alguém as pegue ou expire. Portanto, as filas (e assinaturas duráveis) precisam de algum gerenciamento ativo de armazenamento, é preciso pensar em consumidores lentos.
Na maioria dos ambientes, eu argumentaria, os tópicos são a melhor escolha, porque você sempre pode adicionar componentes adicionais sem precisar alterar a arquitetura. Os componentes adicionados podem ser monitoramento, registro, análise, etc. Você nunca sabe no início do projeto como serão os requisitos em 1 ano, 5 anos, 10 anos. A mudança é inevitável, aceite-a :-)
fonte
É simples assim:
fonte
notificationProcessor
(envia uma notificação para o pôster),karmaProcessor
(dá carma para liker e pôster),feedProcessor
(move-se rapidamente para cima nos feeds das pessoas). Tudo de forma assíncrona, é claro.Quanto à preservação do pedido, consulte esta página do ActiveMQ . Em resumo: o pedido é preservado para consumidores individuais, mas com vários consumidores, o pedido de entrega não é garantido.
fonte
Filas
Prós
Contras
Tópicos
Prós
Contras
fonte
Se você tiver N consumidores, então:
Os tópicos JMS entregam mensagens para N de N As filas JMS entregam mensagens para 1 de N
Você disse que está "procurando ter uma" coisa "que enviará uma cópia da mensagem para cada assinante na mesma sequência em que a mensagem foi recebida pelo broker do ActiveMQ".
Então, você deseja usar um Tópico para que todos os N assinantes obtenham uma cópia da mensagem.
fonte
TÓPICO :: tópico é uma comunicação para muitos ... (multiponto ou publicação / assinatura) EX: -imagine que um editor publique o filme no youtub, todos os seus assinantes receberão uma notificação .... QUEVE :: queve é one-to -uma comunicação ... Ex: -Quando publicar um pedido de recarga, ele passará para apenas um qreciever ... lembre-se sempre de que, se o pedido for para todos os qreceivers, ocorrerá uma recarga múltipla durante o desenvolvimento de analisar o que é adequado para um aplicativo
fonte
Fila é o objeto gerenciado JMS usado para manter as mensagens aguardando o consumo dos assinantes. Quando todos os assinantes consumiram a mensagem, a mensagem será removida da fila.
O tópico é que todos os assinantes de um tópico recebem a mesma mensagem quando a mensagem é publicada.
fonte