1

我需要实现一个消息传递场景,该场景使用来自多个目的地(主题)的消息。由于这些主题的吞吐量非常低,我正在使用弹簧simplemessagelistenercontainer让 activemq 将消息推送到适当的侦听器中。

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

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

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

不幸的是,这会导致死锁(根据 yourkit)。

我怎样才能使这两个属性起作用?或者:我怎样才能加快异步发送的嵌入式activemq?

4

1 回答 1

0

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

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

于 2012-06-25T12:16:46.657 回答