消息队列日记存储

更新:2007 年 11 月

日记队列使您得以在处理消息时保存消息的副本。可在本地计算机日记队列中存储从您的计算机发送的消息副本,也可以在服务器上的队列日记中存储从队列中移除的消息的副本。

如果需要稍后重新发送消息,日记存储会很有用。例如,假设向队列发送了一个消息,然后收到关于未能传递该消息的否定确认。确认消息不包含原始消息的正文;而是提供一些头信息和对应于原始消息的相关 ID。如果打开了日记记录,则可以使用此相关 ID 在计算机的日记队列中定位原始消息,重新创建消息对象并重新发送它。

说明:

可以使用 ReceiveByCorrelationIdPeekByCorrelationId 方法,通过消息的相关 ID 对消息进行检索。请注意,多个消息可能具有同一相关 ID,这些方法将检索队列中具有给定 ID 的第一个消息。

关于日记队列有几点应注意的忠告:

  • 每台计算机上都有一个全局日记队列。该日记队列中记录从该计算机发送的所有消息,无论这些消息是否被成功传递。另外,每个队列都有自己的关联日记队列。

  • 有两个控制如何使用日记的属性。如果在 MessageQueue 对象上设置 UseJournalQueue 属性,则为该队列检索到的任何消息(而不是随该对象发送的消息)启用日记存储。随队列发送的消息将放在队列日记中。如果在 Message 对象上设置 UseJournalQueue 属性,则启用系统日记存储,这意味着从系统发送的消息将放在发送方的系统队列中。

  • 日记队列有一个最大大小,称为配额。此大小受队列驻留的计算机磁盘容量的限制。达到队列容量后,已发送到日记队列的消息不再保存在系统中。出现这种情况时不引发任何错误。定期清除日记队列以防止这种情况发生很重要。有关更多信息,请参见如何:清除队列内容

  • 日记队列是静态的,即它们无法创建关于自身的确认消息,无法将移除的消息发送到死信队列或者无法处理超时。

有关设置消息的日记存储的说明,请参见如何:在日记队列中存储消息

请参见

任务

如何:在日记队列中存储消息

如何:清除队列内容

其他资源

发送和序列化消息