gpt4 book ai didi

azure - 两个 Azure 事件中心使用者会收到相同的通知吗?

转载 作者:行者123 更新时间:2023-12-03 02:35:51 27 4
gpt4 key购买 nike

我正在开发一个 Azure IoT Web 应用程序,该应用程序使用来自 Azure 事件中心的事件。我定期在测试环境中将 Web 应用程序发布到 Azure,然后我还在自己的计算机上以 Debug模式运行它,当发生这种情况时,本质上有两个 Web 应用程序同时运行,它们是事件中心的使用者。

我想知道一个消费者是否可能“吞下”一条通知,这样另一个消费者就不会收到它。这会很糟糕,我必须为我的调试本地计算机设置一个单独的事件中心。

事件中心的两个使用者都会收到所有通知吗?

我没有以任何特殊方式设置事件中心或使用者代码。消费者代码使用 Azure.Messaging.EventHubs.EventProcessorClient ,其 ProcessEventAsync() 如下所示:

async Task ProcessEventHandler(ProcessEventArgs eventArgs)
{
string deviceId = eventArgs.Data.Properties["deviceId"].ToString();
string message = Encoding.UTF8.GetString(eventArgs.Data.Body.Span);
await ProxyMessageToController(deviceId, message);


await eventArgs.UpdateCheckpointAsync(eventArgs.CancellationToken);
}

最佳答案

EventHubProcessorClient 将确保在您创建处理器时指定的使用者组范围内的给定分区只有一个事件读取器。只要读取事件中心的每个 EventHubProcessorClient 使用相同的使用者组,它们就不会同时从同一分区主动读取。

重要的是要知道 EventProcessorClient 与其他处理器协调以在它们之间分配负载。当一个处理器从其他处理器“窃取”分区的所有权时,您可能会看到一些重叠,其中两个处理器都读取了相同的事件。这种重叠通常是一个非常小的时间窗口,但确实在一定程度上取决于您的检查点策略。启动新处理器时,您很可能会看到分区所有权发生变化,直到所有分区均匀分布。

另一个需要注意的是,事件中心服务具有至少一次传递保证。尽管事件发生在同一时间,但也有可能发生重复。

关于azure - 两个 Azure 事件中心使用者会收到相同的通知吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63291986/

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