当 Azure 服务总线中发生死信时,如何确保在启用会话的队列/订阅上有序传递消息

问题描述 投票:0回答:0

我正在构建一个集成项目,其中涉及使用 Azure 服务总线主题订阅和订阅该主题的 Azure Function 应用程序。我的基本要求是确保与用户相关的更新(可能在一天中的不同时间间隔发生)必须以相同的发生顺序传递并执行消息的并行处理。

例如,考虑以下更新:

  1. 用户1已付款
  2. 用户2更新了个人资料
  3. 用户2已付款
  4. 用户1更改了地址
  5. 用户1报告了付款争议
  6. 用户2报告了付款争议

每个 User1 和 User2 的这三个更新可能会在一天中的不同时间发生,但必须以相同的顺序发送到订阅 Function 应用程序。在示例中,在付款更新之前无法发送付款争议。

为了实现这一目标,我选择在服务总线上实现消息会话。首先,我在服务总线队列/主题上启用会话,并在发布消息时将用户 ID 设置为会话 ID。

我知道我可以实现 PeekLock 行为和客户端重试以从瞬时故障中恢复。假设由于出现问题(可能是客户端或最大传递计数耗尽),消息被移动到服务总线中的死信队列。我可以创建另一个 Azure 函数来重试死信消息。

但是,如果一条消息是死信的,如何确保消息以相同的顺序传递? 是否有任何最佳实践来确保我自动重试死信消息,同时按照发布到队列中的顺序传递更新?

预先感谢您的帮助。

注意:我在堆栈溢出中没有找到类似的问题,因此发布了这个问题。我发现死信队列会重试,但在启用会话的队列/主题的情况下不会重试。

session azureservicebus azure-servicebus-queues dead-letter azure-servicebus-subscriptions
© www.soinside.com 2019 - 2024. All rights reserved.