2011-12-06 41 views
0

我有一個消息生產者在一個JVM上運行,它將消息放入一個JMS隊列中。我有一個消息使用者實現了Message-Driven-Bean和MessageListener接口來監聽這個隊列。在不同的JVM上。MDB沒有在啓動後監聽

生產者正確地將消息放入隊列中,但MDB無法從隊列中彈出消息。奇怪的是,當我重新啓動消息使用者時,隊列中的所有消息都被彈出消息消費者一次。此後,無論有多少消息生產者放入隊列中,消息使用者都不會彈出它們。 可能是什麼原因?

我使用的應用程序服務器是JBOSS4.0.5.GA。

謝謝

回答

0

請提供更多詳情。從你所提供的:

  • 是你的消費者跑步和等待消息? (在某種類型的while循環或阻塞調用中)
  • 您可以將您的客戶的prefetch大小設置爲1,以便在jms連接設置中爲1,以便從隊列中僅獲取1個(或任何數量)的消息。
+0

消費者正在運行。隊列中已經有消息。預計會彈出這些消息並開始處理它們。但它不是。我必須重新啓動它。沒有任何類型的循環。它的一個MDB的實現並且有一個onMessage()方法。 – wantobegeek

+0

沒關係,所以如果你的消費者在不經常收聽郵件的時候,它只會收到一次郵件。你需要的是一直保持監聽隊列的線程。 –

+0

你問題中的任何代碼都會有幫助。 –