2010-10-20 61 views
0

我有一個監聽bean,它調用MDBs onMessage方法中的會話bean方法。如果發生異常(例如IllegalStateException(我拋出)或NPE),那麼JBoss將不斷記錄異常,並且不斷重試以傳遞相同的消息,再次發送垃圾郵件日誌,然後將消息發送到DLQ,並再次調用onMessage這再次失敗......瘋狂。如果在MDB的onMessage中發生異常,如何阻止垃圾郵件日誌?

有什麼辦法可以阻止它嗎?是否有一個MDB的配置屬性告訴,如果onMessage中發生任何異常(如果onMessage不返回)重試X次,然後再次嘗試!在那兒?

回答

0

您使用偵聽器端口或激活規範嗎?我不使用JBoss,我使用WebSphere,但是我發現在WebSphere的偵聽器端口區域下,可以設置最大重試計數。也許你的管理控制檯中有一個地方可以改變日誌記錄級別,這樣它就不會發送垃圾郵件嗎?最後,我會在消息頭中尋找一個名爲retryCount的屬性(或者,如果您沒有一個,請創建一個屬性)。然後使用它並在你的bean中檢查它。如果它讀取它並且你失敗了N次,那麼就自動轉發到沒有JBoss的DLQ。可以爲你節省一些頭痛。

+0

問題是,jBoss確實將消息放入DLQ中,但它繼續嘗試傳遞相同的消息,因爲它沒有轉到DLQ。如果我打開日誌記錄,那麼我仍然知道jboss將在無用的異常和重試上旋轉並在CPU上消失。 – rapadura 2010-10-20 13:36:49

相關問題