【发布时间】:2017-07-29 23:43:00
【问题描述】:
我在需要以下要求的地方使用 ActiveMQ
- 拥有非常快的消费者,因为我的生产者已经非常快了
- 需要每秒至少处理 2K 条消息
- 在服务器崩溃或其他故障的情况下不需要再次处理/使用消息。我可以再次触发整个过程。
- 需要运行非常正常的配置服务器 - 4Gib RAM
我已经配置了如下所示的 ActiveMQ
- 使用
non-persistent delivery mode(vm://localhost)(http://activemq.apache.org/what-is-the-difference-between-persistent-and-non-persistent-delivery.html) - 使用 Spring 集成在队列/通道中/从队列/通道中放置/获取消息。
- 将
max-concurrent-consumers与10线程一起使用 - 假设所有其他配置默认使用 ActiveMQ 和 Sprig-integration。
问题/疑问
- 我不确定 ActiveMQ 如何在
non-persistent delivery mode的情况下存储消息,一旦我的队列大小超过某个限制,我的进程是否可能会因内存不足错误而失败?我问这个是因为很难为我测试整个过程。因此,在触发流程之前,我需要了解限制。 - 如果
non-persistent delivery mode不足以满足我的上述要求,是否有任何性能调整技巧可以通过persistent delivery mode(tcp://) 达到我的要求。我已经用这种模式进行了测试,但是这里的消费者似乎很慢。另外,我已经尝试使用DUPS_OK_ACKNOWLEDGE让我的消费者快速使用persistent delivery mode,但没有运气。
注意:我使用的是最新的 ActiveMQ 版本5.14
【问题讨论】:
标签: performance jms spring-integration activemq consumer