【发布时间】:2015-10-20 01:08:33
【问题描述】:
我有一个关于 JMS 的问题。我一直在查看一些博客,其中显示了队列侦听器如何接收发送主题消息。甚至有可能,据我所知,只有订阅特定主题的客户端才能收到发布的消息。
问候。
【问题讨论】:
-
您的问题目前尚不清楚,您需要提供更多详细信息,可能还需要提供一些代码示例来阐明您的问题。
我有一个关于 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 匹配的任何已创建队列。
示例主题名称:
队列名称示例:
【讨论】: