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