尝试了解Azure Service Bus会话

问题描述 投票:1回答:2

所以我试图理解Azure服务总线会话ID,以便在我的队列中创建FIFO。

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

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

创造:

第一步:检查队列中是否有消息及其会话ID,并公开ID层次结构。

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

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

阅读:

第一步:检查队列中是否有消息及其会话ID,并公开ID层次结构。

Next:读取并删除层次结构中最早的Session-ID。

下一步:流程......

请记住,我没有包含错误处理,例如读取和删除部分,因为我已经想到了。

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

c# session fifo sessionid azure-servicebus-queues
2个回答
0
投票

所以我试图理解Azure服务总线会话ID,以便在我的队列中创建FIFO。

假设你已经浏览了Message Sessions上的文档并且没有跳过Microsoft.Azure.ServiceBusWindowsAzure.ServiceBus的链接样本,你会注意到后一个样本对会话的运行方式有广泛的解释。

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

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

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

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


1
投票

详细说明:

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

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

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

希望这是有道理的。

© www.soinside.com 2019 - 2024. All rights reserved.