Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 试图理解Azure服务总线会话_C#_Session_Fifo_Sessionid_Azure Servicebus Queues - Fatal编程技术网

C# 试图理解Azure服务总线会话

C# 试图理解Azure服务总线会话,c#,session,fifo,sessionid,azure-servicebus-queues,C#,Session,Fifo,Sessionid,Azure Servicebus Queues,所以我试图理解Azure服务总线会话ID,以便在队列中创建FIFO 我的想法很直截了当,但我不知道这是否是FIFO的正确方式 我在队列中创建FIFO的以下步骤中思考: 创建: 首先:检查队列中的消息及其会话ID,并公开ID层次结构 下一步:使用层次结构中的最新会话ID创建新消息,并将该值迭代1(+1) 下一步:发送到服务总线队列 阅读: 首先:检查队列中的消息及其会话ID,并公开ID层次结构 下一步:读取并删除层次结构中最早的会话ID 下一步:处理 请记住,我没有包括错误处理,例如读取和删除部分

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

我的想法很直截了当,但我不知道这是否是FIFO的正确方式

我在队列中创建FIFO的以下步骤中思考:

创建:

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

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

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

阅读:

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

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

下一步:处理

请记住,我没有包括错误处理,例如读取和删除部分,因为我已经解决了这个问题

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

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

假设您已经阅读了上的文档,并且没有跳过和的链接示例,那么您会注意到后一个示例对会话如何操作进行了广泛的解释

您不需要“创建”FIFO队列,只需将其用于会话,这就是您实现所需的方式。会话有它们的用例。其中一个是您的场景,您有一个不确定的会话,其中只有一个会话ID,用于按顺序保存消息

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

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

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

详细说明:

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

但是,如果存在多个队列侦听器,则在会话之间或每组消息之间仍然可以发生并行性

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


希望这是有意义的。

在重新处理过程中,失败的消息会记住它们的会话ID吗?是的。SessionId被分配给每条消息。在3条消息中,哪一个会话首先被检索并锁定?(如果侦听器不超过1个)