I'm using azure event hub's EventProcessorHost to process batch of events. For some reason I have to skipped events by not writing checkpoint when the threads count has reached the maximum, but I have to retrieve those skipped events after the threads count come down. Please see the implementation below:
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;
}
}
}
This is a simple and straightforward logic but it's not working as what I expected. Once the "break" line hit the "foreach" breaks, I expect those skipped events will show up in the next "ProcessEventsAsync", but they never come again until the worker role recycle and re-register the "EventProcessorHost".
I have stuck in this issue for a few days please someone figure out what I've missed.
Many Thanks in advance!