gpt4 book ai didi

java - Activemq 一段时间后不平衡消息

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

我将 activemq(5.14.5)camel(2.13.4) 一起使用,因为我仍然需要 java 6。我有一个队列和 15 个消费者。发送给他们的消息是请求回复。

当我启动消费者时,一旦消息到达,消息就会分发给每个消费者,但一段时间后,只有一个消费者收到消息,其他消费者保持空闲状态,并且许多消息处于待处理状态。

消费者有这样的配置:

concurrentConsumers=15&maxMessagesPerTask=1&destination.consumer.prefetchSize=0&transferException=true

由于我们的业务规则,处理每条消息所花费的时间可能会有很大差异,因此,我不知道activemq是否有一些规则来管理缓慢的消费者并仅重定向到一个更慢的消费者“高效”。

我期望的行为是所有到达的消息开始处理,直到所有消费者都已满,但事实并非如此。

有人知道发生了什么吗?

以下是有关正在发生的情况的图像: Queues

最佳答案

您的配置有两个引人注目的设置:

  1. maxMessagesPerTask=1

如果您不打算配置自动缩放线程池,则应该完全删除此设置。默认情况下是无限的,它设置保留线程进行处理的时间(向上/向下扩展线程池)。

另请参阅Spring Docs about this setting

  • prefetchSize=0
  • 您是否尝试过将其设置为 1,以便每个消费者一次只收到 1 条消息?

    AMQ docs说一下 prefetchSize:

    Large prefetch values are recommended for high performance with high message volumes. However, for lower message volumes, where each message takes a long time to process, the prefetch should be set to 1. This ensures that a consumer is only processing one message at a time. Specifying a prefetch limit of zero, however, will cause the consumer to poll for messages, one at a time, instead of the message being pushed to the consumer.

    关于java - Activemq 一段时间后不平衡消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52274752/

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