Azure 服务总线中的死信队列中的消息是否会过期?
一些解释
我有这些队列设置:
var queueDescription = new QueueDescription("MyTestQueue")
{
RequiresSession = false,
DefaultMessageTimeToLive = TimeSpan.FromMinutes(1),
EnableDeadLetteringOnMessageExpiration = true,
MaxDeliveryCount = 10
};
namespaceManager.CreateQueue(queueDescription);
当我将一些消息放入 Azure 服务总线消息队列(不是来自 Azure 存储的队列)并且不使用它们(永远)时,它们将自动移至死信队列。
但是,如果我也没有死信队列的使用者,那么消息是否会从死信队列中删除,还是会永远留在那里? (是否有一些官方文档说明这应该如何工作?)
我的考验
在我的试验中,我把3 条消息在队列中。大约两分钟后,他们就变成了死信。它们在死信队列中保留了至少一天并且没有被删除。
虽然打电话命名空间管理器.GetQueueAsync() http://msdn.microsoft.com/en-us/library/Dn130225%28v=VS.100,d=hv.2%29.aspx给了我上面的值(注意如何MessageCount
还是3
but DeadLetterMessageCount
奇怪的是0
),我仍然可以从死信队列接收消息。 (所以他们没有从队列中删除。)
塞巴斯蒂安(Sebastian)您的观察是正确的,消息一旦放入死信子队列就永远不会过期。它们将永远可用,直到从死信子队列中明确删除。在上述关于工具/api 的错误中,可能是刷新问题?需要在消息成为死信之后调用 GetQueueAsync(),这不是确定性时间,假设您有一个包含一千条已过期消息的队列,但该队列未被使用(发送/接收操作) ) 那么计数可能仍会返回为“活动”状态,直到执行某些操作为止。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)