.net - 有什么方法可以在 azure 事件中心中使用 EventProcessorHost 检索跳过的事件吗?

标签 .net azure azureservicebus azure-eventhub

我正在使用 azure 事件中心的 EventProcessorHost 来处理批量事件。由于某种原因,当线程计数达到最大值时,我必须通过不写入检查点来跳过事件,但我必须在线程计数下降后检索这些跳过的事件。请参阅下面的实现:

async Task IEventProcessor.ProcessEventsAsync(PartitionContext context, IEnumerable<EventData> messages)
    {
        //Process Events
        foreach (var eventData in messages)
        {
            if (Process.GetCurrentProcess().Threads.Count <= 50)
                {
                    //do work
                    await context.CheckpointAsync(eventData);
                }
                else
                {
                    //do not write Checkpoint
                    break;
                }        
        }
    }

这是一个简单明了的逻辑,但它并没有按照我的预期工作。一旦“break”行遇到“foreach”中断,我希望这些跳过的事件将显示在下一个“ProcessEventsAsync”中,但它们永远不会再次出现,直到辅助角色回收并重新注册“EventProcessorHost”。

我已经被这个问题困扰了几天,请有人弄清楚我错过了什么。

非常感谢!

最佳答案

不,无论您选择如何处理事件,都会按顺序接收事件。因此,即使 foreach 循环一旦退出就永远不会执行,只要您有事件的租约和要接收的事件,ProcessEventsAsync 就会被调用。

关于.net - 有什么方法可以在 azure 事件中心中使用 EventProcessorHost 检索跳过的事件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35100045/

相关文章:

Azure逻辑应用程序: Service Bus Trigger Fails withe error ""message": "Error from token exchange....."

c# - HtmlRenderer 不从 css 渲染背景图像

.net - 模拟所有格量词

azure - 无权在范围内执行操作 'Microsoft.Resources/deployments/write'

Azure Multi-Tenancy 应用程序对某些租户不可见

azureservicebus - Rebus:如何在不处理总线实例的情况下停止/启动消息处理?

c# - Entity Framework 单个漂亮的错误消息

c# - 如何在Windows phone 8 中通过Assembly.Load 动态加载程序集?

asp.net - 如何将现有的Azure Web角色转换为新型Azure网站?

c# - 找不到有效的帐户信息组合