ActiveMQ非持久交付模式限制?
问题描述:
我使用,我需要以下要求ActiveMQ非持久交付模式限制?
- 有非常快的消费者作为我的生产者都已经非常快
- 在租赁需要每秒
- 不按规定2K的消息处理来处理的ActiveMQ /消费消息再次发生服务器崩溃或其他故障。我可以再次触发整个过程。
- 需要运行非常正常的配置服务器 - 4Gib RAM
下面
- 给出使用
non-persistent delivery mode
(vm://localhost
)(http://activemq.apache.org/what-is-the-difference-between-persistent-and-non-persistent-delivery.html) - 使用认沽Spring集成/取我已经配置的ActiveMQ消息从/排队/通道。
- 使用
max-concurrent-consumers
与10
螺纹 - 假设所有其他CONFIGS是通过和ActiveMQ默认和小枝整合。
问题/问题
- 我不知道怎么的ActiveMQ在
non-persistent delivery mode
情况下商店的消息,是有可能,一旦我的队列大小超出了某些限制我的过程将内存不足的错误失败?我在问这个问题,因为为我测试整个过程非常困难。所以我在触发这个过程之前需要知道限制。 - 如果
non-persistent delivery mode
是不符合我的以上要求,是否有任何性能调整提示,我可以达到我的要求与persistent delivery mode
(tcp://
)。我已经用这种模式进行过测试,但似乎消费者在这里速度很慢。此外,我已经尝试使用DUPS_OK_ACKNOWLEDGE
,以便让我的消费者快速获得persistent delivery mode
,但没有运气。
注:我使用最新的ActiveMQ版本5.14
答
我不知道如何存储在非持久传递模式情况下的ActiveMQ消息
ActiveMQ的存储消息在存储器中首先,它也将它交换到磁盘(activemq的数据路径中有一个tmp_storage文件夹)。
是有可能,一旦我的队列大小超出了某些限制
我从来没有在ActiveMQ中遇到内存不足,即使有大约100万条信息我的过程将内存不足错误而失败。
您还可以通过生产者流量控制(http://activemq.apache.org/producer-flow-control.html)确认。 当没有消耗太多的消息时,可以让生产者挂起。
而关于持久交付的表现,我也没有很好的方法。
感谢您的回复@MallowFox ..你能解释一下关于'producer-flow'的一些信息。根据我的理解,它是自动配置的权利?或者我们是否应该在重负荷的情况下做任何事情来减缓生产者流量? –
@Vishal Zanzrukia您只需要在activemq的config xml中设置memoryUsage限制和tempUsage限制。当负载很重时,生产者会自动放慢速度。 – Solo