Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.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#_Multithreading_Azure_Azure Eventhub - Fatal编程技术网

C# Azure事件中心-按顺序接收事件

C# Azure事件中心-按顺序接收事件,c#,multithreading,azure,azure-eventhub,C#,Multithreading,Azure,Azure Eventhub,我正在使用下面的代码从Azure事件中心接收事件 我想按顺序处理到达事件中心的请求。例如,有人在很短的时间内发送了5个事件,我想完成请求1的处理,然后我想处理第二个请求 如何处理依次进入事件中心的事件?从 为了使其连续,您需要选择适当的分区键 如果在发布事件时未指定分区键,则 使用循环分配。在许多情况下,使用分区键 如果事件顺序很重要,则是一个很好的选择。当你使用 分区键,这些分区要求在单个节点上可用, 随着时间的推移,可能会发生停机;例如,当计算节点时 重新启动并修补 在从eventhub接

我正在使用下面的代码从Azure事件中心接收事件

我想按顺序处理到达事件中心的请求。例如,有人在很短的时间内发送了5个事件,我想完成请求1的处理,然后我想处理第二个请求

如何处理依次进入事件中心的事件?

为了使其连续,您需要选择适当的分区键

如果在发布事件时未指定分区键,则 使用循环分配。在许多情况下,使用分区键 如果事件顺序很重要,则是一个很好的选择。当你使用 分区键,这些分区要求在单个节点上可用, 随着时间的推移,可能会发生停机;例如,当计算节点时 重新启动并修补


在从eventhub接收的事件束中,有一个名为
序列号
的属性,因为该束是一个列表,所以您可以按
序列号
排序,然后处理事件。

Event Hub使用分区来实现事件处理的水平缩放。您可以在事件中心创建期间指定从1到32的分区数。消息顺序只保证在一个分区内,而不是在所有分区之间

如果需要维护顺序,则只需将事件写入特定分区,并仅从同一分区读取。在Azure事件中心中,分区分布在不同的实例上,以实现高可用性。这意味着,分区可能会因维护而脱机,然后再联机。所以,若您想要管理订单,那个么您需要对单个分区进行写和读操作,并且您可能需要手动管理诸如从应用程序逻辑脱机的分区等情况

如果您需要管理订单,我建议使用Azure Service Bus队列,该队列的订单和可用性由Service Bus it自行管理