Задержанная контрольная точка в ProcessEventsAsync
EventHub-х IEventProcessor
Интерфейс имеет следующий метод:
Task ProcessEventsAsync(PartitionContext context, IEnumerable<EventData> messages)
Я хочу постгрегрегировать сообщения, полученные от концентратора событий в TPL.DataFlow
потому что оригинальные партии слишком малы. При этом мне нужно было бы проверять события где-нибудь в конвейере потока данных, и это, очевидно, происходит спустя долгое время после возврата метода.
Q.1: я могу использовать context
аргумент после ProcessEventsAsync
вернулся? Насколько это безопасно?
В.2: Есть ли лучший способ делать то, что я хочу?
1 ответ
После изучения исходного кода обработчика событий я пришел к выводу, что это не очень хорошая идея. PartitionContext является изменяемым и не кажется потокобезопасным, поэтому одновременный вызов его методов может повредить его состояние.