Dov*_*vmo 2 java multithreading activemq-classic activemq-artemis
ActiveMQ 中的持久主题(这似乎是 JMS 本身的一个障碍)似乎只有一个使用者可以在订阅者上处于活动状态。
也就是说,在 ActiveMQ 文档中:
JMS 持久订阅者 MessageConsumer 是使用唯一的 JMS clientID 和持久订阅者名称创建的。要与 JMS 兼容,在任何时间点只能为一个 JMS clientID 激活一个 JMS 连接,并且对于一个 clientID 和订阅者名称只能激活一个使用者。即,只有一个线程可以从给定的逻辑主题订阅者中主动消费。
但是,其他排队系统(根据文档,Azure 服务总线似乎是这样做的)似乎很容易在单个“订阅”上允许多个线程“订阅者”。在这个时代,人们会认为这是理所当然的。
为什么会这样?这是否会在 JMS 和/或 ActiveMQ 的未来版本中得到解决?
PS,对于这种情况,“虚拟主题”(上面引用的文档)似乎不是一种理想且性能不佳的解决方法,因为它似乎在后台为每个订阅者创建了一个完全独立的队列。
为什么会这样?
您引用的文档说明了为什么会这样 - 符合 JMS。需要明确的是,这里的 JMS 合规性是 1.1 版。JMS 2.0 引入了“共享”持久订阅者
这是否会在 JMS 和/或 ActiveMQ 的未来版本中得到解决?
ActiveMQ 5.x 仅实现 JMS 1.1,我知道没有计划添加对 JMS 2.0 的支持。但是,ActiveMQ Artemis(ActiveMQ 旗下的另一个代理,建立在更现代、更高性能的核心之上)确实支持 JMS 2.0(以及其他协议)。
就其价值而言,在具有队列的代理中实现订阅不一定存在性能问题。这就是 ActiveMQ Artemis 所做的,它具有非常好的性能。
| 归档时间: |
|
| 查看次数: |
1666 次 |
| 最近记录: |