日志队列能够保存你操做过的消息的备份。它的好处是,一但发现前面的操做失败,能够从日志队列中从新建立出原先的消息对象,而后再进行操做。spa
例如,向远方发送一个消息对象,而后对方返回一个失败的确认。咱们能够从失败确认消息中提取出一个和开始发送的消息相关的ID值,而后根据提出的ID值从日志队列中找到发送的消息,.net
从新建立一个消息对象,并再次发送。在.net中,咱们使用 ReceiveByCorrelationID 或 PeekByCorrelationID 方法根据 CorrelationD 值取得消息对象。
在一台机器上,都会有一个全局消息队列,它保存任何从该机器发出的消息,而不论消息发送是否成功。每一个消息队列也能够有本身的消息日志队列。日志
日志队列的使用有两种方式:code
一种是对消息队列对象设置 UseJournalQueue 属性,它表示对该队列收到的全部消息使用日志记录方式,而对于发出的消息不作任何记录;对象
另外一种方法是对消息对象设置 UseJournalQueue 属性,全部被发送的消息将被记录到系统日志队列中去。blog
消息日志队列有一个最大容量,称做quota,一旦日志队列存储容量到达该值后,之后到来的本应存储的的消息将再也不被存储,同时不会发出任何的出错信息。队列
因此做为管理人员,应该按期清理日志队列,以防止上述现象的发生。消息队列只是被动的接收端,它们不可能返回确认消息,或者发送删除的消息到死信队列中,或者是进行超时处理。
例子:
设置消息队列对象的 UseJournalQueue 属性,以记录收到的消息到日志队列中
MyMessageQueue.UseJournalQueue=True 消息队列
设置消息对象的 UseJournalQueue 属性,以记录收到的消息到系统日志队列中
MyMessage.UseJournalQueue=True io