日誌隊列能夠保存你操做過的消息的備份。它的好處是,一但發現前面的操做失敗,能夠從日誌隊列中從新建立出原先的消息對象,而後再進行操做。spa
例如,向遠方發送一個消息對象,而後對方返回一個失敗的確認。咱們能夠從失敗確認消息中提取出一個和開始發送的消息相關的ID值,而後根據提出的ID值從日誌隊列中找到發送的消息,.net
從新建立一個消息對象,並再次發送。在.net中,咱們使用 ReceiveByCorrelationID 或 PeekByCorrelationID 方法根據 CorrelationD 值取得消息對象。
在一臺機器上,都會有一個全局消息隊列,它保存任何從該機器發出的消息,而不論消息發送是否成功。每一個消息隊列也能夠有本身的消息日誌隊列。日誌
日誌隊列的使用有兩種方式:code
一種是對消息隊列對象設置 UseJournalQueue 屬性,它表示對該隊列收到的全部消息使用日誌記錄方式,而對於發出的消息不作任何記錄;對象
另外一種方法是對消息對象設置 UseJournalQueue 屬性,全部被髮送的消息將被記錄到系統日誌隊列中去。blog
消息日誌隊列有一個最大容量,稱做quota,一旦日誌隊列存儲容量到達該值後,之後到來的本應存儲的的消息將再也不被存儲,同時不會發出任何的出錯信息。隊列
因此做爲管理人員,應該按期清理日誌隊列,以防止上述現象的發生。消息隊列只是被動的接收端,它們不可能返回確認消息,或者發送刪除的消息到死信隊列中,或者是進行超時處理。
例子:
設置消息隊列對象的 UseJournalQueue 屬性,以記錄收到的消息到日誌隊列中
MyMessageQueue.UseJournalQueue=True 消息隊列
設置消息對象的 UseJournalQueue 屬性,以記錄收到的消息到系統日誌隊列中
MyMessage.UseJournalQueue=True io