我正在构建一个集成项目,其中涉及使用 Azure 服务总线主题订阅和订阅该主题的 Azure Function 应用程序。我的基本要求是确保与用户相关的更新(可能在一天中的不同时间间隔发生)必须以相同的发生顺序传递并执行消息的并行处理。
例如,考虑以下更新:
每个 User1 和 User2 的这三个更新可能会在一天中的不同时间发生,但必须以相同的顺序发送到订阅 Function 应用程序。在示例中,在付款更新之前无法发送付款争议。
为了实现这一目标,我选择在服务总线上实现消息会话。首先,我在服务总线队列/主题上启用会话,并在发布消息时将用户 ID 设置为会话 ID。
我知道我可以实现 PeekLock 行为和客户端重试以从瞬时故障中恢复。假设由于出现问题(可能是客户端或最大传递计数耗尽),消息被移动到服务总线中的死信队列。我可以创建另一个 Azure 函数来重试死信消息。
但是,如果一条消息是死信的,如何确保消息以相同的顺序传递? 是否有任何最佳实践来确保我自动重试死信消息,同时按照发布到队列中的顺序传递更新?
预先感谢您的帮助。
注意:我在堆栈溢出中没有找到类似的问题,因此发布了这个问题。我发现死信队列会重试,但在启用会话的队列/主题的情况下不会重试。