JMS 主题在队列侦听器中接收
JMS topic receive in a Queue listener
我有一个关于 JMS 的问题。我一直在查看一些博客,其中展示了队列侦听器如何接收发送主题消息。据我所知,甚至有可能只有订阅特定主题的客户端才能收到发布的消息。
此致。
因此,假设您发布到一个主题,您希望使用队列中的消息。我假设你使用 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.
[=31 的队列=]
示例主题名称:
- VirtualTopic.GameScores
示例队列名称:
- Consumer.ScoreBoardService.VirtualTopic.GameScores
- Consumer.BettingService.VirtualTopic.GameScores
我有一个关于 JMS 的问题。我一直在查看一些博客,其中展示了队列侦听器如何接收发送主题消息。据我所知,甚至有可能只有订阅特定主题的客户端才能收到发布的消息。
此致。
因此,假设您发布到一个主题,您希望使用队列中的消息。我假设你使用 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.
[=31 的队列=]
示例主题名称:
- VirtualTopic.GameScores
示例队列名称:
- Consumer.ScoreBoardService.VirtualTopic.GameScores
- Consumer.BettingService.VirtualTopic.GameScores