2011-04-15 51 views
2

我可以讓一些發送者發送一些消息,但是當我在一個會話中創建兩個接收者時,第一個會工作,第二個會被阻塞。在調試中,我看到第二個接收器收到的隊列列表大小爲零。我發現會話是爲一個線程創建的,我不知道這個問題是否涉及不安全的線程?爲什麼QueueSession只能在JMS中創建一個接收器?

我使用ActiveMQ實現。

回答

2

JMS會話絕對是單線程的。因此,它只能有一個有源接收器。您有2個選項:

  1. 對多個會話使用一個連接,每個會話都有一個接收器。連接是線程安全的,您可以從單個連接創建多個會話。
  2. ActiveMQ爲您提供了許多關於multiplexing multiple destinations的選項,因此您可能需要專注於一個接收器,而不是使用多個接收器,而是使用ActiveMQ的工具創建虛擬目標,以通過一個接收器彙集所需的所有消息。

請參閱this question

相關問題