我正在使用ActiveMQ,我需要以下要求
我已将ActiveMQ配置为如下所示
non-persistent delivery mode
(vm://localhost
)(http://activemq.apache.org/what-is-the-difference-between-persistent-and-non-persistent-delivery.html)max-concurrent-consumers
与10
个帖子一起使用问题/疑问
non-persistent delivery mode
的情况下ActiveMQ如何存储消息,一旦我的队列大小超过某个限制,我的进程是否可能因内存不足错误而失败?我问这个是因为我很难对整个过程进行测试。因此,在触发流程之前,我需要了解限制。non-persistent delivery mode
不足以满足我的上述要求,是否有任何性能调优技巧可以通过persistent delivery mode
(tcp://
)实现我的要求。我已经用这种模式测试了,但看起来消费者在这里很慢。此外,我已尝试使用DUPS_OK_ACKNOWLEDGE
以persistent delivery mode
快速消费我的消费者,但没有运气。注意:我使用的是最新的ActiveMQ版本5.14
答案 0 :(得分:1)
我不确定在非持久传送模式的情况下ActiveMQ如何存储消息
Activemq首先在内存中存储消息,并且还将它交换到磁盘(activemq的数据路径中有一个tmp_storage文件夹)。
一旦我的队列大小超过某个限制
,我的进程可能会因内存不足错误而失败
我从未在activemq中遇到内存不足,即使有大约一百万条消息。
您还可以通过生产者流程控制(http://activemq.apache.org/producer-flow-control.html)来确保。 当没有消耗太多消息时,您可以让生产者挂起。
关于持续交付的表现,我也没有好方法。