尝试了解 Azure 服务总线会话

Joh*_*ohn 3 c# session fifo sessionid azure-servicebus-queues

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

我的想法非常直接,但我不知道在 FIFO 方面是否正确。

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

创造:

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

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

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

阅读:

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

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

下一个:过程...

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

所以问题是这是正确的思维方式,而且,我如何在 C# 中实现这一点,我真的无法找到以直接方式解释这个概念的东西。

boy*_*986 9

详细说明:

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

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

存储所有 9 条消息的队列的每个侦听器/处理器都会锁定共享相同会话 ID 的所有消息,然后一次处理一条消息,直到会话完成(通常是当队列中没有更多消息时)使用该会话 ID,除非您关闭自动完成并决定在您认为必要时手动关闭会话)。

希望这是有道理的。


Sea*_*man 5

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

假设你通过对文档不见了消息会话,并没有跳过链接的样本Microsoft.Azure.ServiceBusWindowsAzure.ServiceBus,你会发现,后者的样本对会话如何运作的广泛的解释。

您不“创建”一个 FIFO 队列,您只需将它与会话一起使用,这就是您实现所需的方式。会话有它们的用例。其中之一是您的场景,您有一个具有单个会话 ID 的无限期会话,以保持消息有序。

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

我如何在 C# 中实现这一点我真的找不到以直接方式解释这个概念的东西。

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