Performance ActiveMQ非持久传递模式限制?
我正在使用ActiveMQ,需要满足以下要求Performance ActiveMQ非持久传递模式限制?,performance,jms,spring-integration,activemq,consumer,Performance,Jms,Spring Integration,Activemq,Consumer,我正在使用ActiveMQ,需要满足以下要求 有非常快的消费者,因为我的生产商已经非常快了 每秒需要处理至少2K封邮件 在服务器崩溃或其他故障的情况下,无需再次处理/使用消息。我可以再次触发整个过程 需要运行非常正常的配置服务器-4Gib RAM 我已按如下所示配置ActiveMQ 使用非持久传递模式(vm://localhost)() 使用spring集成在队列/通道中放入/取出消息 与10线程一起使用max并发使用者 假设默认情况下,所有其他配置都与ActiveMQ和Sprig集成
- 有非常快的消费者,因为我的生产商已经非常快了
- 每秒需要处理至少2K封邮件
- 在服务器崩溃或其他故障的情况下,无需再次处理/使用消息。我可以再次触发整个过程
- 需要运行非常正常的配置服务器-4Gib RAM
- 使用
非持久传递模式(
)()vm://localhost
- 使用spring集成在队列/通道中放入/取出消息
- 与
线程一起使用10
max并发使用者
- 假设默认情况下,所有其他配置都与ActiveMQ和Sprig集成
- 我不确定ActiveMQ在
非持久传递模式下如何存储消息,一旦队列大小超过某个限制,我的进程是否可能会失败并出现内存不足错误?我这样问是因为我很难测试整个过程。因此,在触发流程之前,我需要了解限制
- 如果
不足以满足我的上述要求,是否有任何性能调整技巧,我可以通过非持续交付模式
(持续交付模式
)实现我的要求。我已经用这种模式进行了测试,但这里的消费者似乎非常慢。此外,我已经尝试使用tcp://
让我的消费者快速使用DUPS\u OK\u ACKNOWLEDGE
,但运气不佳持续交付模式
5.14
我不确定ActiveMQ在非持久传递模式下如何存储消息
Activemq首先将消息存储在内存中,它还将把消息交换到磁盘(Activemq的数据路径中有一个tmp_存储文件夹)
一旦队列大小超过某个限制,我的进程是否可能会失败并出现内存不足错误
我从未在activemq中遇到过内存不足的情况,即使有大约一百万条消息
您还可以通过producer flow control()确保。
当有太多的消息未被使用时,您可以使生产者挂起
关于持续交付的性能,我也没有好的方法。谢谢您的回复@MallowFox。。你能解释一下生产流程吗。据我所知,它是自动配置的,对吗?或者我们需要做些什么来减缓生产流程,以防负载过大?@Vishal Zanzrukia您只需要在activemq的配置xml中设置memoryUsage限制和tempUsage限制。当负载较重时,生产商会自动减速。