gpt4 book ai didi

jms - activeMQ 主题泛洪

转载 作者:行者123 更新时间:2023-12-01 12:45:01 26 4
gpt4 key购买 nike

运行 ActiveMQ 5.4.0。我有一组用户通过一个通用的 ActiveMQ JMS 提供程序订阅和发布彼此的各种主题。经过一段时间的事件后,ActiveMQ 控制台开始显示

INFO|USAGE MANAGER memory limit reached. Stopping producer (ID ...... to prevent flooding topic .....

此消息针对各种主题重复出现。我知道在某些情况下,某些消息永远不会传递。 “网络”上的所有生产者都没有实现任何类型的流量控制。他们只是发送并忘记。显然,一些生产者被封锁了,但大多数最终还是挣脱了。我相信这些主题是非持久/非持久的。

我只是使用默认的 activemq 配置。那么,如何最好地解决这个问题呢?禁用流量控制是否明智以及如何禁用?

最佳答案

如果您使用默认的 ActiveMQ 配置,则流量控制处于开启状态。这就是您收到这些消息的原因。

如果您不想使用流量控制,您可以执行以下操作:
<policyEntry topic="myTopic" producerFlowControl="false">
这将使用 ActiveMQ 提供给您的尽可能多的内存。但是请注意,如果 ActiveMQ 认为您可能会导致其他队列出现问题等,它会在某个时候开始通过磁盘假脱机消息 - 这会影响性能,因为它会影响磁盘。这与持久性完全分开。但是,如果与您的总数据需求相比,您在启动时为 java 设置了合理的堆限制,那么您应该没问题。

请注意,如果您想告诉它不要通过磁盘假脱机,您必须使用流量控制并且必须设置内存大小的最大值,例如:

<policyEntry topic="myTopic" producerFlowControl="true" memoryLimit="200mb">
<pendingQueuePolicy>
<vmQueueCursor/>
</pendingQueuePolicy>
</policyEntry>

当达到 memoryLimit 时,这不会使用磁盘和块生产者。同样,您应该能够对其进行定制,使其适用于您的配置。

有关流量控制的更多信息: http://activemq.apache.org/producer-flow-control.html

关于jms - activeMQ 主题泛洪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5291679/

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