我刚刚更新了我们的EventHub事件读取从EventHubConsumerClient.ReadEventsAsync
到EventProcessorClient
根据ReadEventsAsync
方法下的备注。EventProcessorClient
使用检查点,这需要Azure存储容器来存储Blob。尽管所有进入EventHub的消息(据我所知)都在被处理,但客户端在每次启动时都会抛出Error response [response-id] 404 The specified blob does not exist.
警告。
在调用_logger.LogInformation
之前的下面的代码片段中抛出警告:
public async Task StartAsync(CancellationToken cancellationToken)
{
try
{
EventProcessorClient processorClient = _processorClient.Value
?? throw new NullReferenceException(nameof(_processorClient.Value));
processorClient.ProcessEventAsync += _deviceToCloudMessageHandler.EventHandler;
processorClient.ProcessErrorAsync += _deviceToCloudMessageHandler.ErrorHandler;
await processorClient.StartProcessingAsync(cancellationToken);
_logger.LogInformation("EventProcessorClient started.");
_healthCheckReporter.Healthy();
}
catch (Exception ex)
{
_logger.LogError(ex, "Failed to start EventProcessorClient.");
_healthCheckReporter.Unhealthy("Failed to start EventProcessorClient.", ex);
}
}
在EventProcessorClient也抛出并捕获异常之后:An exception occurred while receiving events for Event Hub. Error Message: 'At least one receiver for the endpoint is created with epoch of '0', and so non-epoch receiver is not allowed. Either reconnect with a higher epoch, or make sure all epoch receivers are closed or disconnected.
我不确定这两个是如何交织在一起的,因为我确信我已经看到了blob容器警告,而没有异常跟随它。
我们使用Azure IoT Hub内置端点,使用的消费者组为$Default。
一个新的容器和使用EventProcessorClient
重新启动服务没有帮助。我不知道客户端是如何找到无处可寻的blob ID的,也不知道客户端在哪里寻找这些未找到的blob。这里所有其他与blob相关的问题通常都与客户端处理的头或设置有关,而不是向我公开。我需要帮助弄清楚为什么每次服务启动时都会抛出警告,尽管一切似乎都在工作。谢谢你。
1条答案
按热度按时间fxnxkyjh1#
我能够通过按照下图中的函数和资源组创建事件网格。
您遇到的错误消息“Error response:404指定的blob不存在”,表明EventProcessorClient-无法找到它期望存在于用于检查点的Azure存储容器中的blob。