即使在计划的队列时间之后,Azure服务总线消息也会停留在计划队列中

时间:2017-09-14 07:19:05

标签: azure azureservicebus azure-servicebus-queues

我正在尝试在天蓝色服务总线中安排消息,并且在预定队列中卡住的消息很少,并且即使在到达ScheduledEnqueueTimeUtc后也从未返回到活动队列

发送预定BrokeredMessage的代码非常正常:

var message = new BrokeredMessage(info);
message.Properties.Add("Action", "Bookmark");
message.ContentType = "Info";
message.ScheduledEnqueueTimeUtc = DateTime.UtcNow.AddMinutes(Int32.Parse(ConfigurationManager.AppSettings["Delay"]));
var serviceBusClient = QueueClient.CreateFromConnectionString(ConfigurationManager.AppSettings["ConnectionString"], ConfigurationManager.AppSettings["ServiceBusQueueName"]);
serviceBusClient.Send(message);

在测试时,我发送的20,000条消息中只有6条消息被卡住,也是随机时间。

以下是调试模式下的屏幕截图 Screenshot for invalid ExpiresAtUtc

注意:最初我认为邮件由于ExpiresAtUtc错误而被卡住,但经过一些阅读后发现,当新邮件被安排时, ExpiresAtUtc 12/31/9999 11:59:59 PM 此外,我发现当通过克隆来自Queue的消息来安排消息时,对于预定消息的ExpiresAtUtc将不会是12/31/9999 11:59:59 PM,但即使它在预定队列中也将是其正确的ExpiresAtUtc时间< / p>

1 个答案:

答案 0 :(得分:0)

正如我们所提到的,默认情况下,预定邮件的ExpiresAtUtc被分配到9999年,这不应该是问题的原因。

根据您的屏幕截图,这些消息不会变为活动(消息状态为“预定”),您可以尝试拨打CancelScheduledMessageAsync() method并检查如果消息可以取消。

client.CancelScheduledMessageAsync(sequenceNumber)

此外,您可以尝试创建新的Azure Service Bus队列并运行代码以将计划的消息发送到该新队列,并检查新队列中是否可以显示相同的问题。如果问题仅出现在该特定队列中,您可以create a support request向Azure支持工程师寻求帮助。