【问题标题】:Not getting all the brokered messages from azure service bus subscription未从 Azure 服务总线订阅中获取所有代理消息
【发布时间】:2016-08-06 07:21:26
【问题描述】:

我正在使用 Azure 服务总线订阅和主题来发送订单和获取订单。我们有一个 Windows 应用程序,它使用来自 azure 服务总线订阅的 web api 来拉订单。

假设如果用户登录并获得 5 个订单。如果用户从 Windows 应用程序注销,那么我们将解锁来自 azure 服务总线的消息。如果用户在 5 分钟或更短的时间内再次登录,那么我们不会从 azure 服务总线获得所有订单。它有时会像 3 或 4 一样来。

谁能帮助我解决这个问题,为什么我没有再次收到所有 5 个订单。我正在使用subscribeclinet 的ReceiveBatch 方法来拉取消息。

【问题讨论】:

  • 能否详细说明第二段?你是什​​么意思“f用户从Windows应用程序注销然后我们解锁来自Azure服务总线的消息”?另外,当用户登录时,您是否会拉下所有消息?
  • 嗨,肖恩,我的意思是 Windows 应用程序中有登录/注销功能。当用户登录时,我们使用 peeklock 方法从 azure 中提取消息,并且消息锁定时间设置为 5 分钟,因为我们需要一些时间来处理消息。如果我们完成了一条消息,那么我们将它从服务总线订阅中标记为完成。如果我们在用户注销时没有解锁消息,那么我们将不会收到消息,直到那些没有被 azure 自动解锁的消息。因此,当用户注销时,我们手动放弃来自 azure 的消息,以便其他 Windows 应用用户可以获取这些消息。
  • 也可能是TTL(TimeToLive)过期问题。

标签: azure azureservicebus servicebus azure-servicebus-queues brokeredmessage


【解决方案1】:

我怀疑您在这里遇到了交货计数问题。假设我正确理解了您的意思,Windows 应用程序会以PeekLock 模式提取消息。处理完消息后,您就完成了它。否则,在退出应用程序时,您会放弃消息。如果您未完成消息处理,并且用户退出,则消息将被放弃,而DeliveryCount 会增加。一旦DeliveryCount 超过实体上设置的最大值,该消息将被死信并且将不再传递。

  1. 在实体上检查您的MaxDeliveryCount
  2. 检查您实体的 DLQ 以验证这是否是行为
  3. 如果它们是 DLQed,我建议查看 centralising your DLQs 以便于错误处理

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-28
    • 1970-01-01
    • 2013-02-12
    • 2019-02-12
    • 1970-01-01
    • 2017-04-22
    • 2017-06-09
    • 1970-01-01
    相关资源
    最近更新 更多