public async Task <DeliveryResult <TKey, TValue> > ProduceAsync(string topic, Message <TKey, TValue> message,
                                                                        CancellationToken cancellationToken = new CancellationToken())
        {
            message.Headers = message.Headers ?? new Headers();

            using (var scope = _tracer.CreateAndInjectActiveProducerScopeFrom(
                       message.Headers.ToDictionary(Encoding.UTF8)))
            {
                scope.Span.SetTag(Tags.MessageBusDestination, topic);

                var report = await _producer.ProduceAsync(topic, message, cancellationToken);

                scope.Span.SetTag("kafka.topic", report.Topic);
                scope.Span.SetTag("kafka.partition", report.Partition);
                scope.Span.SetTag("kafka.offset", report.Offset);

                return(report);
            }
        }