gpt4 book ai didi

java - ActiveMQ 主题上的并行消息消费

转载 作者:行者123 更新时间:2023-11-30 06:46:42 24 4
gpt4 key购买 nike

ActiveMQ 中的持久主题(这似乎是 JMS 本身的一个障碍)似乎只有一个消费者可以在订阅者上处于 Activity 状态。

也就是说,在 ActiveMQ 文档中:

A JMS durable subscriber MessageConsumer is created with a unique JMS clientID and durable subscriber name. To be JMS compliant only one JMS connection can be active at any point in time for one JMS clientID, and only one consumer can be active for a clientID and subscriber name. i.e., only one thread can be actively consuming from a given logical topic subscriber.

然而,其他排队系统(根据文档,看起来 Azure 服务总线就是这样做的),似乎很容易允许单个“订阅”上有多个线程“订阅者”。在当今时代,人们会认为这是理所当然的。

为什么会出现这样的情况呢?这个问题会在 JMS 和/或 ActiveMQ 的 future 版本中得到解决吗?

附注对于这种情况,“虚拟主题”(上面引用的文档)似乎不是一个理想且性能不佳的解决方法,因为它似乎在后台为每个订阅者创建了一个完全独立的队列。

最佳答案

Why is this the case?

您引用的文档说明了为什么会出现这种情况 - 符合 JMS。需要明确的是,此处的 JMS 符合版本 1.1。 JMS 2.0 引入了“共享”持久订阅者

Is this going to be resolved in future versions of JMS and/or ActiveMQ?

ActiveMQ 5.x 仅实现 JMS 1.1,据我所知,没有计划添加对 JMS 2.0 的支持。然而,ActiveMQ Artemis (ActiveMQ 旗下的另一个代理,构建在更现代、更高性能的核心之上)确实支持 JMS 2.0(以及其他协议(protocol))。

就其值(value)而言,在具有队列的代理中实现订阅并不一定会出现性能问题。这就是ActiveMQ Artemis所做的事情,并且它具有非常好的性能。

关于java - ActiveMQ 主题上的并行消息消费,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47192264/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com