2012-06-13 28 views
0

我需要實現一個消息傳遞場景,消耗來自多個目的地(主題)的消息。由於這些主題的吞吐量非常低,我使用彈簧simplemessagelistenercontainer讓activemq將消息推送到適當的監聽器中。如何使async = false和alwaysSessionAsync = false在vm傳輸上工作?

alwaysSessionAsync = false確保我與嵌入式代理的vm連接不會爲每個會話創建一個線程(因爲每個監聽器和數千個監聽器都有一個會話)。

像這樣我的配置文件在內部的activemq任務線程中啓動simplemessagelistenercontainer,容器將它調度到一個線程池中。不幸的是,activemq任務線程非常緩慢。

所以我想使用async = false(而不是jms.sendAsync)來使用消息發送線程來處理消息並將其推送到偵聽器,並將其調度到處理程序線程池中。

不幸的是,這會導致死鎖(根據yourkit)。

我怎樣才能使這兩個屬性的工作? 或者:我如何加快異步發送的嵌入式activemq?

回答

0

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

做什麼,我想做的事。但如果您在發送消息時發送消息,則會造成死鎖。

相關問題