protected virtual Task AckMessageIfApplicable(IPipeContext context) { var autoAck = context.GetConsumeConfiguration()?.AutoAck; if (!autoAck.HasValue) { _logger.Debug("Unable to ack original message. Can not determine if AutoAck is configured."); return(Task.FromResult(0)); } if (autoAck.Value) { _logger.Debug("Consuming in AutoAck mode. No ack'ing will be performed"); return(Task.FromResult(0)); } var deliveryTag = context.GetDeliveryEventArgs()?.DeliveryTag; if (deliveryTag == null) { _logger.Info("Unable to ack original message. Delivery tag not found."); return(Task.FromResult(0)); } var consumerChannel = context.GetConsumer()?.Model; if (consumerChannel != null && consumerChannel.IsOpen && deliveryTag.HasValue) { _logger.Debug("Acking message with {deliveryTag} on channel {channelNumber}", deliveryTag, consumerChannel.ChannelNumber); consumerChannel.BasicAck(deliveryTag.Value, false); } return(Task.FromResult(0)); }