Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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
Performance ActiveMQ非持久传递模式限制?_Performance_Jms_Spring Integration_Activemq_Consumer - Fatal编程技术网

Performance 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集成

我正在使用ActiveMQ,需要满足以下要求

  • 有非常快的消费者,因为我的生产商已经非常快了
  • 每秒需要处理至少2K封邮件
  • 在服务器崩溃或其他故障的情况下,无需再次处理/使用消息。我可以再次触发整个过程
  • 需要运行非常正常的配置服务器-4Gib RAM
我已按如下所示配置ActiveMQ

  • 使用
    非持久传递模式(
    vm://localhost
    )()
  • 使用spring集成在队列/通道中放入/取出消息
  • 10
    线程一起使用
    max并发使用者
  • 假设默认情况下,所有其他配置都与ActiveMQ和Sprig集成
问题/问题

  • 我不确定ActiveMQ在
    非持久传递模式下如何存储消息,一旦队列大小超过某个限制,我的进程是否可能会失败并出现内存不足错误?我这样问是因为我很难测试整个过程。因此,在触发流程之前,我需要了解限制
  • 如果
    非持续交付模式
    不足以满足我的上述要求,是否有任何性能调整技巧,我可以通过
    持续交付模式
    tcp://
    )实现我的要求。我已经用这种模式进行了测试,但这里的消费者似乎非常慢。此外,我已经尝试使用
    DUPS\u OK\u ACKNOWLEDGE
    让我的消费者快速使用
    持续交付模式
    ,但运气不佳
注意:我使用的是最新的ActiveMQ版本
5.14

我不确定ActiveMQ在非持久传递模式下如何存储消息

Activemq首先将消息存储在内存中,它还将把消息交换到磁盘(Activemq的数据路径中有一个tmp_存储文件夹)

一旦队列大小超过某个限制,我的进程是否可能会失败并出现内存不足错误

我从未在activemq中遇到过内存不足的情况,即使有大约一百万条消息

您还可以通过producer flow control()确保。 当有太多的消息未被使用时,您可以使生产者挂起


关于持续交付的性能,我也没有好的方法。

谢谢您的回复@MallowFox。。你能解释一下生产流程吗。据我所知,它是自动配置的,对吗?或者我们需要做些什么来减缓生产流程,以防负载过大?@Vishal Zanzrukia您只需要在activemq的配置xml中设置memoryUsage限制和tempUsage限制。当负载较重时,生产商会自动减速。