消费者组中的消费者如何在 Azure eventhub 中工作?

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

假设我的 Azure eventhub 有 32 个分区。我有一个消费者尝试读取 32 个分区并进行检查点设置。但有时,事件中心的传入消息可能会扩大。为了管理规模扩大,我正在考虑扩大消费者规模。因此,这就像一个消费者组中的 2 个消费者各自读取 32 个分区。

azure eventhub 文档中,我读到始终建议在消费者组内的分区上仅创建一个活动接收器,否则有可能读取重复事件。

我的问题是,

  1. 即使使用检查点,两个不同的消费者是否可以从同一分区读取同一事件?

  2. 如果是这样,当传入消息扩大时解决此问题的最佳方案是什么? 我是否应该创建一个使用者来仅读取分区 1-16,并创建另一个使用者来读取分区 17-32 来处理负载?

azure event-handling azure-eventhub producer-consumer
1个回答
0
投票

您的消费者是什么?您是否使用 VM 应用程序或 Azure 函数或类似的东西?

  1. 即使使用检查点,两个不同的消费者是否可以从同一分区读取同一事件? 检查点位于每个消费者组的分区级别。因此,只有当您使用不同的消费者组并且尝试读取同一分区时,您肯定会收到需要处理的重复事件。如果您有 2 个应用程序使用相同的使用者组和相同的分区,您将不会收到重复的事件,但您可能会遇到争用问题,即两个应用程序都尝试读取同一分区,但该分区已被 1 个应用程序锁定。这是在 Azure 函数中自动处理的。

  2. 如果是这样,当传入消息扩大时解决此问题的最佳方案是什么?我是否应该创建一个只读取分区 1-16 的使用者,并创建另一个读取分区 17-32 的使用者来处理负载? 您有多确定 2 个消费者足以满足未来的负载?如果您使用 Azure 功能和设置自动缩放,则会自动管理争用问题,并且服务器将根据负载扩展到最大设置或分区数量。如果您确定只需要 2 个虚拟机/应用程序,那么是的,分而治之。在两者之间拆分分区数量。这是假设事件发送者在没有分区键或分区号的情况下发送事件。在这种情况下,事件将在所有分区之间进行负载平衡。

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