Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jms activeMQ主题泛洪_Jms_Activemq - Fatal编程技术网

Jms activeMQ主题泛洪

Jms activeMQ主题泛洪,jms,activemq,Jms,Activemq,正在运行ActiveMQ 5.4.0。我有一组用户,他们通过一个公共的ActiveMQ JMS提供程序就各种主题相互订阅和发布。活动一段时间后,ActiveMQ控制台开始显示 INFO|USAGE MANAGER memory limit reached. Stopping producer (ID ...... to prevent flooding topic ..... 对于各种主题,此消息会重复出现。我知道在某些情况下,有些信息永远无法传递。“网络”上没有一家生产商实施任何形式的流量控

正在运行ActiveMQ 5.4.0。我有一组用户,他们通过一个公共的ActiveMQ JMS提供程序就各种主题相互订阅和发布。活动一段时间后,ActiveMQ控制台开始显示

INFO|USAGE MANAGER memory limit reached. Stopping producer (ID ...... to prevent flooding topic .....
对于各种主题,此消息会重复出现。我知道在某些情况下,有些信息永远无法传递。“网络”上没有一家生产商实施任何形式的流量控制。他们只是发送和忘记。显然,一些生产商被封锁了,但大多数最终都逃脱了。我认为这些话题是不持久的


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

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

如果不想使用流量控制,可以执行以下操作:

这将使用ActiveMQ提供给您的尽可能多的内存。但是,请注意,如果ActiveMQ认为您可能会给其他队列等造成问题,那么它会在某个时候开始通过磁盘假脱机消息—这会影响性能,因为它会影响磁盘。这与持久性完全不同。但是,如果您在启动时为java设置了一个合理的堆限制,与您的总数据需求相比,您应该可以

请注意,如果您想告诉它不要在磁盘中执行假脱机操作,则必须使用流量控制,并且必须设置最大内存大小,例如:

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

这将不会使用磁盘,并在命中MemoryLit时阻止生产者。同样,您应该能够对其进行定制,使其适用于您的配置


有关流量控制的更多信息:

谢谢Brian的回复。因此,在JMS中,如果一个主题有多个订阅者,而其中一个订阅者由于某种原因未能接收到消息,那么该消息会永远存在于代理中吗?在这种情况下,制片人是否最好使用“生存时间”选项?@Maxx-老实说,我不确定。在离开ActiveMQ大约1.5年后,我最近又开始使用ActiveMQ,并且发生了很多变化。我只是对你的问题有点了解,因为它和我们刚才遇到的排队问题类似。我目前根本没有使用主题。我也发现了这一点。而且很容易实现@BrianRoach,是否可以在不重新启动activemq的情况下更改配置并将其放入服务器?像热交换?