private bool ValidateCurrentMessage() { if (!string.IsNullOrWhiteSpace(CurrentMessage.RoutingKey)) { return(true); } else { CurrentLog.Error(CurrentMessage, $"Message without routing key has been received. Skipping it. Processor #{_id}."); CurrentMessage.Ack(); return(false); } }
private async Task ProcessMessageAsync( IMessageSubscription subscription, EnvelopedMessage envelopedMessage, object payload, MessageHeaders headers) { var publisher = _repliesPublisher?.Invoke(headers.CorrelationId) ?? ProhibitedRepliesMessagePublisher.Instance; var handlingContext = new MessageHandlingContext ( envelopedMessage.Exchange, envelopedMessage.RetryCount, envelopedMessage.RoutingKey ); var result = await subscription.InvokeHandlerAsync(_serviceProvider, payload, headers, handlingContext, publisher); if (result == null) { throw new InvalidOperationException("Result should be not null"); } switch (result) { case MessageHandlingResult.SuccessResult _: case MessageHandlingResult.NonTransientFailureResult _: CurrentMessage.Ack(); break; case MessageHandlingResult.TransientFailureResult tfr: _retryManager.ScheduleRetry(CurrentMessage, tfr.RetryAfter ?? _defaultRetryTimeout); break; default: throw new NotSupportedException($"Unexpected message handling result [{result.GetType().Name}]."); } }