使用spring jmsTemplate发送大量消息

时间:2015-09-11 16:36:37

标签: java spring jms activemq spring-jms

是否存在将asyncSend设置为true的持久性消息的最佳做法或指导。

我们没有配置事务管理器

我们有~40k-50k消息,使用配置了

的jmsTemplate发送
org.apache.activemq.pool.PooledConnectionFactory

我们有一个for循环,它遍历消息列表并使用

发送它们
jmsTemplate.convertAndSend(destination, msg)

我们经常看到很多消息丢失,当我们关闭asyncSend时,我们获得了可靠性,但生产者性能下降了95%

1 个答案:

答案 0 :(得分:1)

有点猜测,因为问题不是很详细,但无论如何。

根据配置,ActiveMQ可能对队列有内存限制(持久性和非持久性消息之间也可能不同)。因此,当内存启动时,您的asyncSend来电将忽略警告,并继续向黑洞"黑洞"直到消费者释放内存。

没有灵丹妙药可以实现最高性能和最高可靠性。不幸的是

但是,我会尝试在连接工厂上设置producerWindowSize,以便在收到代理确认之前允许一些指定数量的数据。您需要尝试确切的值,具体取决于场景以及代理配置/资源。

相关问题