【发布时间】:2016-01-30 09:22:25
【问题描述】:
我正在使用 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”之前它们永远不会再次出现。
我在这个问题上停留了几天,请有人弄清楚我错过了什么。
提前非常感谢!
【问题讨论】:
标签: .net azure azureservicebus azure-eventhub