c# - Azure 服务总线中的死信队列中的消息是否会过期?

标签 c# azure message-queue azureservicebus

Azure 服务总线中的死信队列中的消息是否会过期?

一些解释

我有这些队列设置:

var queueDescription = new QueueDescription("MyTestQueue")
{
    RequiresSession = false,
    DefaultMessageTimeToLive = TimeSpan.FromMinutes(1),
    EnableDeadLetteringOnMessageExpiration = true,
    MaxDeliveryCount = 10
};

namespaceManager.CreateQueue(queueDescription);

当我将一些消息放入 Azure 服务总线消息队列(不是来自 Azure 存储的队列)并且不使用它们(永远)时,它们将自动移至死信队列。

但是,如果我也没有死信队列的使用者,消息是否会从死信队列中删除,还是会永远留在那里? (是否有一些官方文档说明这应该如何工作?)

我的试验

在我的试验中,我在队列中放置了 3 条消息。大约两分钟后,他们就变成了死信。它们在死信队列中保留了至少一天并且没有被删除。

Message Queue Statistics

虽然打电话NamespaceManager.GetQueueAsync()给了我上面的值(注意 MessageCount 仍然是 3DeadLetterMessageCount 奇怪的是 0),我仍然可以从死信队列接收消息。 (所以它们没有从队列中删除。)

最佳答案

塞巴斯蒂安(Sebastian)您的观察是正确的,消息一旦放入死信子队列就永远不会过期。它们将永远可用,直到从死信子队列中明确删除。在上述关于工具/api 的错误中,可能是刷新问题?需要在消息成为死信之后调用 GetQueueAsync(),这不是确定性时间,假设您有一个队列,其中包含一千条已过期的消息,但该队列未被使用(发送/接收操作) ) 那么计数可能仍会返回为“事件”状态,直到执行某些操作为止。

关于c# - Azure 服务总线中的死信队列中的消息是否会过期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23626995/

相关文章:

rest - ServiceStack Web 服务的存储转发故障转移解决方案

LinuxIPC : cannot remove msqid_ds

c# - 有没有办法编写独立于系统的MVC应用程序?

c# - 使用 CryptoStreams 加密和 HMAC 数据

powershell - 将 cmdlet 输出和另一个变量发送到 CSV 文件

c# - 我应该如何在 DocumentDb 中存储大量行

php - 处理消息队列中的重复

c# - asp.net mvc 上的自定义授权属性

c# - 属性是否会增加实例的内存大小?

python - 如何将数据流式传输到与 Azure Function 绑定(bind)的输出 blob?