有沒有辦法明確告訴代理向佇列分配的死信佇列發送訊息?
我知道我們可以配置一個佇列以在一定次數的重新傳遞嘗試后自動向 DLQ 發送訊息。這對于資料庫問題、網路問題等臨時錯誤非常有意義。但是,在業務規則錯誤的情況下,讓該訊息在 X 分鐘內嘗試重新傳遞 X 次是沒有意義的。當我們知道這是違反業務規則/格式錯誤的訊息等時發送到死信佇列。
我希望有一種方法,當我們發現違反業務規則時,我們可以立即將其發送到該佇列死信佇列。我知道我可以顯式地撰寫代碼將其發送到死信佇列,但我們將有許多(數十個)可配置佇列,并且它們相關的死信佇列將由我們的中間件團隊配置。我不想明確編碼死信佇列佇列名稱,甚至在我自己的屬性中配置它們。我希望有一種簡單的方法可以告訴代理立即將訊息發送到死信佇列而不嘗試重新傳遞。
看起來應該是這樣的message.deadLetter()
。我覺得我一定錯過了一些簡單的東西,但我在消費者、會話或訊息上看不到任何類似的機制。
uj5u.com熱心網友回復:
您在 JMS 規范中描述的功能沒有任何調整。JMS 規范通過JMSRedelivered
標頭和JMSXDeliveryCount
屬性等內容結合了重新傳遞。然而,它實際上沒有提到“死信”目的地。
也就是說,這樣的功能可能由特定的 JMS 代理提供,但是由于您沒有提及您正在使用的 JMS 代理實作,因此不可能說您選擇的代理是否實作了這樣的功能。在任何情況下,它將通過特定于實作的機制進行配置和/或呼叫,根據定義,該機制在代理之間是不可移植的,并且不能從 JMS API 獲得。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/427335.html
上一篇:記錄中的Haskell可變向量