Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Azure Service Bus中死信队列中的邮件是否过期?_C#_Azure_Message Queue_Azureservicebus - Fatal编程技术网

C# Azure Service Bus中死信队列中的邮件是否过期?

C# Azure Service Bus中死信队列中的邮件是否过期?,c#,azure,message-queue,azureservicebus,C#,Azure,Message Queue,Azureservicebus,Azure Service Bus中死信队列中的邮件是否过期 一些解释 我有以下队列设置: var queueDescription = new QueueDescription("MyTestQueue") { RequiresSession = false, DefaultMessageTimeToLive = TimeSpan.FromMinutes(1), EnableDeadLetteringOnMessageExpiration = true, Max

Azure Service Bus中死信队列中的邮件是否过期

一些解释 我有以下队列设置:

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

namespaceManager.CreateQueue(queueDescription);
当我将一些消息放入Azure Service Bus消息队列(而不是来自Azure存储的队列)并且不使用它们时(永远),它们将自动移动到死信队列

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

我的审判 在我的试验中,我在队列中放置了3条消息。大约两分钟后,他们就死了。他们在死信队列中至少呆了一天,没有被移除


尽管调用给了我上面的值(注意
MessageCount
仍然是
3
,但是
deadletmessagecount
奇怪地是
0
),我仍然可以从死信队列接收消息。(因此它们没有从队列中删除。)

Sebastian您的观察是正确的,因为消息一旦放入死信子队列,就永远不会过期。在从死信子队列中明确删除之前,它们将永远在那里可用。在上述关于工具/api的错误中,是否可能是刷新问题?对GetQueueAsync()的调用需要在消息被死信(这不是一个确定的时间)后进行,例如,如果您有一个队列,其中有1000条消息已过期,但该队列未被使用(发送/接收操作),则在执行某些操作之前,计数可能仍会返回活动状态

在做了一些研究之后,我无意中发现了一个我完全忽略的事实:

即使禁用死信,邮件也可能过期。

当邮件过期而死信被禁用(这是默认设置)时,它们将被删除

因此,微软不自动从死信队列中删除邮件的理由可能是:


如果您正在启用死信,则明确地希望过期邮件不要被丢弃,而是存储在其他地方(死信队列),以便您可以查看它们。

基本上:确保定期删除队列,可能以合理的方式删除(即以某种方式处理、抛出错误等).你能提供这个信息的来源吗?“即使禁用死信,邮件也可能过期”我试图查找,但无论如何都找不到该声明,因为我喜欢该评论。我相信也可能有这样一种情况,我们希望发送死信消息,这样我们就不会丢失数据,但仍然会有某种类型的消息过期,这些消息驻留在死信队列中。只是一个想法。