我正在使用 azure 服务总线订阅和主题来发送订单和获取订单。我们有一个 Windows 应用程序,它使用 Web api 从 azure 服务总线订阅中提取订单。
假设用户登录并收到 5 个订单。如果用户从 Windows 应用程序注销,那么我们会解锁来自 azure 服务总线的消息。如果用户在 5 分钟或更短时间内再次登录,那么我们将无法从 azure 服务总线获取所有订单。有时会出现 3 或 4 个。
谁能帮我解决这个问题,为什么我没有再次收到所有 5 个订单。我正在使用 subscriptionclinet 的 ReceiveBatch 方法来拉取消息。
最佳答案
我怀疑您在这里遇到了交货计数问题。假设我正确理解了您的意思,Windows 应用程序会以 PeekLock
模式提取消息。处理消息后,您就完成了它。否则,退出应用程序后,您将放弃这些消息。如果您未完成消息处理,并且用户退出,则消息将被放弃,同时 DeliveryCount
会增加。一旦 DeliveryCount
超过实体上设置的最大值,消息将成为死信并且将不再传递。
- 检查实体上的
MaxDeliveryCount
- 检查您实体的 DLQ 以验证这是否是该行为
- 如果他们被 DLQed,我建议查看 centralising your DLQs为了更轻松地处理错误
关于azure - 未从 azure 服务总线订阅获取所有代理消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38768904/