簡體   English   中英

MSMQ事件記錄不顯示丟棄的消息?

[英]MSMQ Event Logging doesn't show dropped messages?

因此,我正在嘗試將MSMQ消息從一台計算機轉發到另一台計算機(這很容易,我很驚訝),但是房子操作端的要求之一是我們需要能夠看到日志條目當遠程服務器決定不接受消息時。 例如,如果我嘗試發送到不存在的隊列,如下所示:

MessageQueue remoteQueue = new MessageQueue(@"FormatName:Direct=OS:machinename\private$\notarealqueue");

remoteQueue.Send("Test", MessageQueueTransactionType.Single);

該消息進入本地傳遞隊列,並似乎通過網絡發送,但是由於該隊列不存在,因此遠程MSMQ管理器將丟棄該消息。 但是,我在事件日志中沒有找到關於該消息掉在地板上的條目,這使人們感到不安。 Microsoft / Windows / MSMQ / EndToEnd日志似乎只包含成功的消息,這似乎並不是特別有用。 我在某處沒有看到日志嗎?

您可以為此使用MSMQ死信隊列。

message.UseDeadLetterQueue = true;

啟用此功能后,如果無法傳遞消息,它將被發送到兩個系統死信隊列之一-一個用於事務性消息,另一個用於非事務性消息。 您還會在這里找到未傳遞郵件的原因,這是原始目標隊列,完整的郵件正文,標簽等。

您可以使用一種工具來管理隊列以重新發送或恢復這些消息。

事件日志僅用於MSMQ的健康狀態。 單個消息發生的事情很瑣碎,沒有記錄在事件日志中。 想象一下,如果丟棄一百萬條消息並必須將其記錄在事件日志中會發生什么。

暫無
暫無

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

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