似乎 ActiveMQ 中的持久主题(这似乎是 JMS 本身的一个障碍)只有一个消费者可以在订阅者上处于活动状态。
也就是说,在 ActiveMQ 文档中:
JMS 持久订阅者 MessageConsumer 是使用唯一的 JMS 客户端 ID 和持久订阅者名称创建的。要符合 JMS,对于一个 JMS clientID,在任何时间点只能有一个 JMS 连接处于活动状态,并且对于一个 clientID 和订阅者名称,只有一个使用者可以处于活动状态。即,只有一个线程可以从给定的逻辑主题订阅者主动消费。
然而,其他排队系统(看起来像 Azure 服务总线这样做,基于文档),似乎很容易允许单个“订阅”上的多个线程“订阅者”。在这个时代,人们会认为这是理所当然的。
为什么会这样?这会在 JMS 和/或 ActiveMQ 的未来版本中得到解决吗?
PS对于这种情况,“虚拟主题”(上面引用的文档)似乎不是那么理想且性能不佳的解决方法,因为它似乎在后台为每个订阅者创建了一个完全独立的队列。