【发布时间】:2012-06-16 09:07:29
【问题描述】:
我需要实现一个消息传递场景,该场景使用来自多个目的地(主题)的消息。由于这些主题的吞吐量非常低,我正在使用 springs simplemessagelistenercontainer 让 activemq 将消息推送到适当的侦听器中。
alwaysSessionAsync=false 确保我的 vm 与嵌入式代理的连接不会为每个会话创建一个线程(因为我每个侦听器有一个会话和数千个侦听器)。
像这样,我的配置在内部 activemq 任务线程中启动 simplemessagelistenercontainer,并且容器将其调度到线程池中。不幸的是,activemq 任务线程非常慢。
所以我想使用 async=false (NOT jms.sendAsync) 来使用消息发送线程来处理消息并将其推送到侦听器中,然后将其调度到处理程序线程池中。
不幸的是,这会导致死锁(根据 yourkit)。
我怎样才能使这两个属性起作用? 或者:如何加快异步发送的嵌入式 activemq?
【问题讨论】: