【发布时间】:2015-12-08 07:04:59
【问题描述】:
在asyncSend 设置为 true 的情况下发送持久消息是否有最佳实践或指导。
我们没有配置事务管理器
我们有大约 40k-50k 的消息是使用配置了
的 jmsTemplate 发送的org.apache.activemq.pool.PooledConnectionFactory
我们有一个 for 循环,它遍历消息列表并使用它们发送它们
jmsTemplate.convertAndSend(destination, msg)
我们经常看到很多消息丢失,当我们关闭 asyncSend 时,我们获得了可靠性,但生产者的性能下降了 95%
【问题讨论】:
-
在localhost上使用是不是也一样?我会尝试使用其他 JMS 提供商对其进行测试,以缩小通信的哪一侧出现问题(如果不是一些较低级别的问题:例如传输层)。
-
@Ikrnac 没有生产者 java 客户端,activemq 代理位于不同的物理盒子上。我同意这可能是一个传输层问题,我正在研究的是有没有最好的方法来获得良好的可靠性和良好的性能
-
我在建议一些调查方法。为了证明它不是传输层,请将它们放在同一台机器上。如果不是传输层,更换 JMS 提供者(例如 HornetQ 好用),看看是 Spring 还是 ActiveMQ 有问题。
-
顺便说一句,我敢打赌这是 Stack Overflow 帮不了你的事情
-
你能提供代码吗?你在使用持久化吗?
标签: java spring jms activemq spring-jms