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