public async Task Handle(RawBrokerMessage message, RawBrokerMessageHandler next)
        {
            var activity = new Activity(DiagnosticsConstants.ActivityNameMessageConsuming);

            try
            {
                activity.InitFromMessageHeaders(message.Headers);
                activity.Start();
                await next(message);
            }
            finally
            {
                activity.Stop();
            }
        }
        private async Task ExecutePipeline(IEnumerable <IProducerBehavior> behaviors, RawBrokerMessage message, RawBrokerMessageHandler finalAction)
        {
            if (behaviors != null && behaviors.Any())
            {
                await behaviors.First().Handle(message, m => ExecutePipeline(behaviors.Skip(1), m, finalAction));
            }
            else
            {
                await finalAction(message);

                _messageLogger.LogInformation(_logger, "Message produced.", message);
            }
        }
 private async Task ExecutePipeline(IEnumerable <IConsumerBehavior> behaviors, RawBrokerMessage message, RawBrokerMessageHandler finalAction)
 {
     if (behaviors != null && behaviors.Any())
     {
         await behaviors.First().Handle(message, m => ExecutePipeline(behaviors.Skip(1), m, finalAction));
     }
     else
     {
         await finalAction(message);
     }
 }