MSMQ 隊列消息和死信隊列

  • 日誌消息

  日誌隊列能夠保存你操做過的消息的備份。它的好處是,一但發現前面的操做失敗,能夠從日誌隊列中從新建立出原先的消息對象,而後再進行操做。spa

  例如,向遠方發送一個消息對象,而後對方返回一個失敗的確認。咱們能夠從失敗確認消息中提取出一個和開始發送的消息相關的ID值,而後根據提出的ID值從日誌隊列中找到發送的消息,.net

從新建立一個消息對象,並再次發送。在.net中,咱們使用 ReceiveByCorrelationID 或 PeekByCorrelationID 方法根據 CorrelationD 值取得消息對象。
  在一臺機器上,都會有一個全局消息隊列,它保存任何從該機器發出的消息,而不論消息發送是否成功。每一個消息隊列也能夠有本身的消息日誌隊列。日誌

日誌隊列的使用有兩種方式code

  一種是對消息隊列對象設置 UseJournalQueue 屬性,它表示對該隊列收到的全部消息使用日誌記錄方式,而對於發出的消息不作任何記錄;對象

  另外一種方法是對消息對象設置 UseJournalQueue 屬性,全部被髮送的消息將被記錄到系統日誌隊列中去。blog

消息日誌隊列有一個最大容量,稱做quota,一旦日誌隊列存儲容量到達該值後,之後到來的本應存儲的的消息將再也不被存儲,同時不會發出任何的出錯信息。隊列

因此做爲管理人員,應該按期清理日誌隊列,以防止上述現象的發生。消息隊列只是被動的接收端,它們不可能返回確認消息,或者發送刪除的消息到死信隊列中,或者是進行超時處理。
例子:
設置消息隊列對象的 UseJournalQueue 屬性,以記錄收到的消息到日誌隊列中
 MyMessageQueue.UseJournalQueue=True 消息隊列

設置消息對象的 UseJournalQueue 屬性,以記錄收到的消息到系統日誌隊列中
  MyMessage.UseJournalQueue=True io

 

  • 死信隊列

相關文章
相關標籤/搜索