JMS 主题在队列侦听器中接收

问题描述 投票:0回答:1

我有关于 JMS 的问题。我一直在查看一些博客,其中展示了队列侦听器如何接收发送主题消息。据我所知,甚至有可能只有订阅特定主题的客户端才能收到发布的消息。

java jms
1个回答
1
投票

因此,如果您发布到某个主题,您希望使用队列中的消息。我假设您使用 ActiveMQ,因为您添加了该标签。

这样设置的主要原因是能够对消费者的多个集群节点进行负载均衡。普通持久订阅在 JMS 1.x 中不允许这样做。我猜你的情况很相似。

  • 在通用 JMS 中,这是不可能的。然而,在 JMS 2.0 中,持久订阅可以进行负载平衡,因此工作方式有点像队列。并非所有 JMS 代理都实现 JMS 2.0。 ActiveMQ 没有实现 JMS 2.0,但 ActiveMQ Artemis 实现了。

  • ActiveMQ 通过一个称为虚拟主题的概念来实现这一点。使用 Virtual Topics 您可以为主题指定一个特定名称,例如 VirtualTopic.MyTopic 会将所有已发布的消息转发到任何与 Consumer.MyConsumer.VirtualTopic.MyTopic 匹配的已创建队列。

主题名称示例:

  • VirtualTopic.GameScores

队列名称示例:

  • Consumer.ScoreBoardService.VirtualTopic.GameScores
  • Consumer.BettingService.VirtualTopic.GameScores
© www.soinside.com 2019 - 2024. All rights reserved.