【发布时间】:2011-08-11 18:11:02
【问题描述】:
刚刚编写了一个小应用程序来读取我们的 MSMQ 死信队列,并重新发送消息。然而,我注意到,当 TimeToBeReceived 过期时,消息将从远程服务器上的目标队列中删除,并放回发件人的死信队列中,该队列在重新发送之前来自该队列。 这是正常的预期行为吗?我预计它会在到期时进入目标 DLQ。
提前致谢。
弗兰克
【问题讨论】:
刚刚编写了一个小应用程序来读取我们的 MSMQ 死信队列,并重新发送消息。然而,我注意到,当 TimeToBeReceived 过期时,消息将从远程服务器上的目标队列中删除,并放回发件人的死信队列中,该队列在重新发送之前来自该队列。 这是正常的预期行为吗?我预计它会在到期时进入目标 DLQ。
提前致谢。
弗兰克
【问题讨论】:
是的,这很正常。该行为确保所有可能的故障都将进入一个死信队列,发送框上的应用程序将能够检查该队列。 请注意,事务性消息和非事务性消息之间存在差异:对于非事务性消息,一旦超时到期,接收者将向发送者发送一条消息。对于事务性,消息实际上将保留在发送方(在传出队列中标记为“未处理”),直到被接收方接收或移动到死信队列。这样 MSMQ 可以确保消息不会丢失。
【讨论】: