gpt4 book ai didi

java - activemq 通配符消费者如何工作?

转载 作者:搜寻专家 更新时间:2023-11-01 03:22:45 25 4
gpt4 key购买 nike

我正在使用 ActiveMQ 5.8,在 Camel 路由中配置通配符消费者。

我使用默认的 ActiveMQ 配置,所以我有如下默认值

prefetch = 1
dispatch policy= Round Robin

现在我启动了一个消费者 jvm,每个消费者有 5 个消费者,用于 2 个队列。两个队列都具有相同类型的消息和相同数量的消息。

消费者除了打印消息外什么都不做(因此没有数据库阻塞或缓慢的消费者问题)

编辑我已将每个队列的 preFetch 设置为 1

我观察到其中一个队列比其他队列耗尽得更快。

我期望队列以相同的速度耗尽,一种负载平衡。

一个令人惊讶的观察是虽然 activemq webconsole 为每个队列显示 5 个消费者

enter image description here

当我调试我的消费者时,对于通配符队列 *.processQueue,我只看到来自 Camel 流的 5 个线程/消费者 enter image description here

上述行为的原因是什么?如何确保所有队列以相同的速度耗尽?

有没有人可以分享编写自定义调度策略或覆盖 activemq 默认值的经验?

最佳答案

我能够找到对这种行为的引用

通配符队列消费者的消息分发是随机的。

http://activemq.2283324.n4.nabble.com/Wildcard-and-message-distribution-td2346132.html#a2346133

虽然这可以通过设置适当的预取大小来调整。

经过反复试验,我得出了以下公式,以便在消费者之间公平分配并且所有队列以几乎相同的速度出队。

prefetch = number of wildcard consumers

关于java - activemq 通配符消费者如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25369186/

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