簡體   English   中英

Java JMS - 顯式向死信隊列發送消息

[英]Java JMS - Send message to Dead Letter Queue explicitly

有沒有辦法明確告訴代理發送消息到隊列的分配死信隊列?

我知道我們可以配置一個隊列,在一定次數的重新投遞嘗試后自動將消息發送到 DLQ。 這對於數據庫問題、網絡問題等暫時性錯誤非常有意義。但是,在業務規則錯誤的情況下,讓該消息在 X 分鍾之前嘗試重新傳遞 X 次是沒有意義的當我們知道這是違反業務規則/格式錯誤的消息等時被發送到死信隊列。

我希望有一種方法,當我們發現違反業務規則時,我們可以立即將其發送到死信隊列。 我知道我可以明確地編寫代碼將它發送到那個死信隊列,但我們將有許多(幾十個)可配置隊列,它們相關的死信隊列將由我們的中間件團隊配置。 我不想明確編碼死信隊列隊列名稱,甚至不想在我自己的屬性中配置它們。 我希望有一種簡單的方法可以告訴代理立即將消息發送到死信隊列,而不是嘗試重新傳遞。

它似乎應該類似於message.deadLetter() 我覺得我一定遺漏了一些簡單的東西,但我沒有在消費者 session 或消息上看到任何類似的機制。

您在 JMS 規范中描述的功能沒有任何便利。 JMS 規范通過諸如JMSRedelivered header 和JMSXDeliveryCount屬性之類的東西合並了重新傳遞。 然而,它實際上沒有提到“死信”目的地。

也就是說,這樣的功能可能由特定的 JMS 代理提供,但由於您沒有提及您使用的是什么 JMS 代理實現,因此不可能說您選擇的代理是否實現了這樣的功能。 在任何情況下,它都將通過特定於實現的機制進行配置和/或調用,根據定義,該機制在代理之間不可移植,並且無法從 JMS API 獲得。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM