我正在使用以下代码从Azure Event-Hub接收事件
我想按顺序处理进入事件中心的请求。例如,某人在很短的时间内发送了5个事件,我想完成请求1的处理,然后我要处理第二个请求。
如何依次处理进入事件中心的事件?
答案 0 :(得分:1)
从docs
,
为了使其具有顺序性,您需要选择适当的partitionKey
如果在发布事件时未指定分区键,则 使用循环分配。在许多情况下,使用分区键 如果事件排序很重要,则是一个不错的选择。当您使用 分区键,这些分区要求在单个节点上具有可用性, 随着时间的流逝可能会发生中断;例如,当计算节点 重新启动并打补丁。
答案 1 :(得分:0)
在从eventhub接收的事件捆绑中,有一个名为Get-WmiObject -Query 'SELECT * FROM Win32_NTLogEvent WHERE (SourceName = "Microsoft-Windows-Kernel-Power" and EventCode = "41")' | select -First 10
的属性,因为该捆绑是一个列表,您可以按sequence_number
进行排序,然后处理这些事件。
答案 2 :(得分:0)
事件中心使用分区来启用事件处理的水平缩放。您可以在创建事件中心期间将分区数指定为1到32。仅保证在一个分区内而不是在所有分区之间保证消息顺序。
如果需要维护顺序,则仅需要将事件写入特定分区,而只能从同一分区读取。在Azure Event Hub中,分区跨不同实例分布以实现高可用性。这意味着分区可能会脱机进行维护,然后再联机。因此,如果要管理订单,则需要写入和读取单个分区,并且可能需要手动管理情况,例如分区从应用程序逻辑脱机。
如果需要管理订单,我建议使用Azure Service Bus队列,该订单和可用性由服务总线自行管理。