如何在vm传输上使async = false和alwaysSessionAsync = false工作?

时间:2012-06-13 11:58:10

标签: spring activemq

我需要实现消息来自目的地(主题)的消息的消息传递方案。由于这些主题的吞吐量非常低,我使用spring simplemessagelistenercontainer让activemq将消息推送到适当的侦听器。

alwaysSessionAsync = false确保我与嵌入式代理的vm连接不会为每个会话创建一个线程(因为我每个侦听器和数千个侦听器都有一个会话)。

像这样我的配置启动内部activemq任务线程中的simplemessagelistenercontainer,容器将其调度到线程池中。不幸的是,activemq任务线程非常慢。

所以我想使用async = false(NOT jms.sendAsync)来使用消息发送线程来处理消息并将其推送到监听器中,并将其调度到处理程序线程池中。

不幸的是,这导致了死锁(根据你的套件)。

我如何使这两个属性有效? 或者:如何加速嵌入的activemq以进行异步发送?

1 个答案:

答案 0 :(得分:0)

async=false&jms.copyMessageOnSend=false&jms.useAsyncSend=false&jms.alwaysSessionAsync=false&jms.dispatchAsync=false

做我想做的事。但如果您在消费时发送消息,则会造成死锁。