【问题标题】:how to make async=false and alwaysSessionAsync=false work on a vm transport?如何使 async=false 和 alwaysSessionAsync=false 在 vm 传输上工作?
【发布时间】:2012-06-16 09:07:29
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: spring activemq


    【解决方案1】:

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

    做我想做的事。但是如果你在消费的时候发送消息,这会造成死锁。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-16
      • 2016-12-18
      • 1970-01-01
      • 1970-01-01
      • 2016-09-25
      • 2016-10-04
      相关资源
      最近更新 更多