尝试了解 Azure 服务总线会话

Trying to understand Azure Service Bus Sessions

所以我试图了解用于在我的队列中创建 FIFO 的 Azure 服务总线会话 ID。

我的想法很简单,但我不知道它是否适合 FIFO。

我在考虑在我的队列中创建 FIFO 的这些步骤:

创建:

首先:检查队列中的消息及其会话 ID,并公开 ID 层次结构。

下一步: 使用层次结构中最新的 Session-ID 创建新消息并将该值迭代 1 (+1)

下一步: 发送到服务总线队列。

阅读:

首先:检查队列中的消息及其会话 ID,并公开 ID 层次结构。

下一步:读取并删除层次结构中最早的会话 ID。

下一步: 处理...

请记住,我没有包括错误处理,例如读取和删除部分,因为我已经弄明白了。

所以问题是,这是正确的思考方式吗?另外,我如何在 C# 中实现这一点?我真的找不到可以直接解释这个概念的东西。

So I am trying to understand Azure service bus Session ID for creating FIFO in my queue.

假设您已经阅读了 Message Sessions and haven't skipped the linked sample for Microsoft.Azure.ServiceBus and WindowsAzure.ServiceBus 上的文档,您会注意到后一个示例对会话的运作方式进行了详尽的解释。

您没有 "create" FIFO 队列,您只需将它与会话一起使用,这就是您实现所需目标的方式。会话有它们的用例。其中之一是您的场景,您有一个无限期会话和一个会话 ID 来保持您的消息有序。

注意:注意限制(没有并行处理会影响您的吞吐量)。

how do I achieve this in C# I cant really find something that explains this concept in a straight forward manner.

较旧的客户端示例通过非常可靠的细分和解释为您的实施相关问题提供了答案 (WindowsAzure.ServiceBus)。

详细说明:

假设您总共有 9 个队列消息,这些消息被分为三个会话,会话 ID 为 1、2 和 3。然后将按顺序处理每组 3 条消息(先进先出)。

但是,如果有多个队列侦听器, 个会话之间或每组消息之间仍会出现并行性。

存储所有 9 条消息的队列中的每个 listener/processor 都会锁定共享同一会话 ID 的所有消息,然后一次处理一条消息,直到会话完成(通常是在有除非您关闭自动完成并决定在您认为有必要时手动关闭会话,否则队列中不再有该会话 ID 的消息。

希望这是有道理的。