gpt4 book ai didi

c# - Azure 事件中心和使用者组之间的关系

转载 作者:行者123 更新时间:2023-11-30 16:05:39 25 4
gpt4 key购买 nike

请帮我澄清一下。

  • 当处理来自 Azure 事件中心的事件并使用 ConsumerGroupName X 创建 EventProcessorHost 时。如果我在多个进程(而不是线程)上执行此操作,并且我创建多个 EventProcessorHost 都使用 ConsumerGroupName X。那么它们会从同一个进程中读取吗?分区并因此多次获得相同的事件(在赛车条件下)?
  • 当使用 ConsumerGroupName X 和另一个 ConsumerGroupName Y 处理事件时,两个 ConsumerGroup 是否都会获取所有事件,还是仅获取来自某个分区的事件?
  • 在 IEventProcessor 的 ProcessEventsAsync 中处理事件时。什么是await context.CheckpointAsync();实际上呢?它是仅为 ConsumerGroup 设置检查点还是为 EventHub 设置全局设置,以便永远不会再次查看这些事件。这里的上下文是租用分区吗?

编辑:好的,我已经取得了一些进展(如果我错了,请纠正我):

  1. 每个消费者都会收到所有消息。
  2. 租约被分配一个 EventProcessorHost,因此它需要一个唯一的名称,因此消费者组名称在这里并不真正相关。
  3. 仍然不能 100% 确定 context.CheckpointAsync,但我相信它仅适用于 ConsumerGroup?

最佳答案

是的,如果您为多个 EventProcessorHost 指定相同的消费者组名称,那么它们将使用 blob 租约进行协调(假设您为它们指定了不同的唯一标识符),因此一次只有一个事件处理器可以在一个分区上工作。通常,您会在多台机器上有多个进程,以便并行工作。当进程重新启动时,分区可以并且将会在计算机之间移动(存在延迟)。

如果您使用不同的消费者组名称 X 和 Y,则 X 上的处理器将仅与 X 上的处理器协调,Y 上的处理器将仅与 Y 上的处理器协调。您可以在两个不同的处理器上使用相同的名称,如果每个处理器属于不同的消费群体。也就是说,您可以在 X 中使用 EventProcessorHost“一”,在 Y 中使用另一个 EventProcessorHost“二”,并且它们不应该相互干扰。

当检查点进度时,它确实只适用于该 ConsumerGroup 内。正如我提到的here我相信在用于协调租赁的 blob 内跟踪偏移量。因此,每个 ConsumerGroup 都可以在不了解对方的情况下进行检查点(但可能不应该对每条消息进行检查点)。

关于c# - Azure 事件中心和使用者组之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33230707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com