Msmq

MSMQ - 如何在外部設置消息過期?

  • March 3, 2015

如果消息在隊列中等待的時間超過了一段時間,例如 30 分鐘,如何使 MSMQ 自動使消息過期?

我們無法控制創建這些消息以設置MaxTimeToReceive消息屬性的系統。

你不能。

應用程序創建消息時始終設置超時。該值要麼由程式碼提供,要麼取自發送者的隊列管理器的預設值。一旦設置並發送,就是這樣。

如果您無法控制發送消息的系統,那麼您就不走運了,您將不得不提供手動清理舊消息的方法。

乾杯

約翰·布雷克韋爾

這對於 Nishkar 的問題可能為時已晚,但可能對其他人有用。

正如約翰所說,一旦發送,您就無法更改消息屬性。因此,如果您需要類似這樣的解決方案,唯一的解決方案是使用另一個中間隊列來讀取消息,修改您想要的任何內容並將它們發送到原始目標隊列。由於這是簡單的處理,它應該可以快速執行,並且不會超過您的 30 分鐘接收時間。需要注意的一件事是最終消息與原始消息不同。除了您更改的這些屬性外,MSMQ 還會設置新的消息 ID、發送時間等。

這是一個額外的步驟,但如果您沒有其他方法,它可能是一個解決方案。

引用自:https://serverfault.com/questions/261652