【问题标题】:Azure Service Bus issueAzure 服务总线问题
【发布时间】:2015-02-24 03:17:20
【问题描述】:

我正在做一个项目,我们希望像经典队列一样使用 ServiceBus 来进行消息传递。我经常在队列中看到我无法获得的消息。这些消息是活动的(不是死信)。我没有收到任何异常,它等待超时,然后消息为空,没有任何问题。我已经检查过消息的大小,但都小于 1.5 KB。

try
...
QueueClient _queueClient = QueueClient.CreateFromConnectionString(Properties.Settings.Default.ServiseBusConnectionString, Properties.Settings.Default.StatQueueName);

var count = 1000;

for (var i = 1; i <= count; i++)
{
 var message = _queueClient.Receive();
 //timeout 
 if (message == null)
 {
  //message is null :(
  continue;
 }
}
...
catch

【问题讨论】:

标签: azure servicebus azure-servicebus-queues


【解决方案1】:

阅读How to receive messages from a queue 并确保使用_queueClient.Complete()_queueClient.Abandon() 来完成每条消息。

【讨论】:

  • 是的,我完成或放弃,我只展示了部分代码。如果您在 30 秒超时内不执行此操作,消息将被标记为死信。
  • AFAIK 队列中的默认 TTL 是无限的(使用 Visual Studio,您可以看到 10675199.02:48:05.4775807 作为 DefaultMessageTimeToLive 中的值)。你能在你的队列中检查这个值吗?