public override async Task Execute() { var queueData = await _queueExt.GetMessageAsync(); while (queueData != null) { try { // if prehandler tells Skip the event - then we skip the event if (_preHandler != null && !await _preHandler(queueData.Data)) { if (_errorHandlers.ContainsKey(queueData.Data.GetType())) { await _errorHandlers[queueData.Data.GetType()](queueData.Data); } continue; } //if was data is null => unregistered(unknown) type if (queueData.Data == null) { continue; } var handler = _handlers[queueData.Data.GetType()]; await handler(queueData.Data); } finally { await _queueExt.FinishMessageAsync(queueData); queueData = await _queueExt.GetMessageAsync(); } } }
public Task FinishMessageAsync(QueueData token) => WrapAsync(() => _impl.FinishMessageAsync(token), Name);