我是比較新的JMS也碰到實現我第一次真正的應用程序一個奇怪的問題,我的任何幫助或建議desporateJMS消息
背景:我使用AtiveMQ(Java)作爲具有非事務處理,非實體隊列的消息代理。
設計:我有一個基於單個隊列的直接生產者/消費者系統。許多節點(當前爲2個)選擇器用於過濾節點收到的消息
問題:p roducer成功地將其項目放在隊列中(我已經使用Web界面驗證了它們在那裏),但是消費者仍然被阻止並且不讀取它們。只有當我關閉生產者中的JMS連接時,消費者纔會跳入生活並按預期消費這些消息。
這對我來說似乎很怪異,你肯定不應該完全掛斷生產者連接,讓消費者能夠從隊列中讀取。我一定在某個地方犯了一個錯誤(可能有會話),但目前可能出錯的事情數量很大,而且我不知道是什麼會導致這種行爲。
有關解決方案的任何提示,問題的原因或僅僅如何繼續調試將不勝感激。
感謝您的時間,
P.S如果requrie任何額外的信息,我很高興地提供它
嗨蒂姆,謝謝你的迴應。作爲一個調試步驟,我試圖在每次生產者消息發送之後添加一個session.commit,以便在會話進行之前進行事務處理。這隻會導致「IllegalStateException:不是交易會話」,所以我不認爲這是問題。真正奇怪的行爲是我可以看到這些消息,甚至通過經紀人的網頁界面瀏覽它們。他們是他們的產品展示,他們的消費者只有在接近生產者連接時纔會接受:-( – PinkyNoBrain
)最好的辦法是創建一個JUnit測試用例並將其發佈到ActiveMQ郵件列表或創建JIRA問題。 –