Azure Service Bus队列AutoRenewTimeout在'.Complete()'

时间:2016-02-16 11:43:25

标签: c# azure azure-servicebus-queues

我有一个Azure Service Bus Queue。

配置为:

  • 需要重复检测:true
  • 需要会话:true
  • 启用分区:false
  • 最大交货数:10
  • 锁定时长:1分钟
  • 批量操作已启用:true
  • 启用过期时的死信:false
  • 执行消息排序:true

从队列中检索消息时,我使用以下OnMessageOptions:

  • 自动完成:false
  • AutoRenewTimeout:12分钟

每条消息平均需要2分钟才能完成。

其中一些成功,其他人抛出“SessionLockLostException”。

为什么锁定“AutoRenew”不会更新消息锁定?它应该继续做12分钟的工作,但我们在2之后得到了这个例外。

如何调试异常原因?例外情况告诉我发生了什么,但不是为什么。我找不到有关在Service Bus Queue客户端中记录的任何信息。

文件在哪里?这个例子中的MSDN很糟糕!它甚至缺乏关于这些类应该如何工作的基本信息。

编辑:正如MaDeRkAn在评论中提到的那样,“SessionLockLostException”的文档确实提到Azure可以在分区之间移动消息。

当我最初创建一个测试应用程序以查看此方法是否有效时,我将队列配置为使用分区。在弄清楚处理各种情况下发生的各种异常所需的代码时,我会读到该异常。

由于两个原因,我将此作为问题打折:

  1. 我(确切地说)三重检查了禁用分区。我还检查了我们正在使用的队列与我正在寻找的属性相同的队列。
  2. 如果Azure经常导致失败(每2-5条消息),那么该服务几乎无法使用!虽然Azure有时会出现问题,但通常不会完全破坏。

0 个答案:

没有答案