Как добавить открытый интервал в RabbitMQ?

Я использую OpenTracing и пытаюсь распространить диапазон через RabbitMQ. Однако я не понимаю, как я должен вводить промежуток и как извлечь его позже.

Это код для отправки сообщения

def send_message(self, message, tracer):
    root_span = tracer.get_span()
    with opentracing.tracer.start_span('Sending message to broker', child_of=root_span) as span:
        connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
        channel = connection.channel()
        channel.queue_declare(queue='default')

        json_message = json.dumps(message)

        channel.basic_publish(exchange='',
                            routing_key='default',
                            body=json_message)

        connection.close()`

И у меня есть функция обратного вызова для получения сообщения

def _callback(self, ch, method, properties, body):
        print(" [x] Received %r" % body)

Так что где-то и как-то я хочу ввести промежуток, а затем извлечь его. Кто-нибудь знает или есть примеры, как это сделать?

Я пытался ввести, прежде чем вызвать basic_publish в отправителя, как это

tracer.inject(span, Format.HTTP_HEADERS, headers)

Но я понятия не имею, какие аргументы используются для метода ввода.

Затем я попытался извлечь это в обратном вызове

span_ctx = tracer.extract(Format.HTTP_HEADERS, {})

Опять же, я не знаю, какие аргументы входят в метод извлечения.

РЕДАКТИРОВАТЬ: решено, вроде

Я решил это, отправив носитель в заголовок свойств. Тогда я мог бы извлечь span из атрибута свойств обратного вызова

В отправителе:

channel.basic_publish(exchange='',
                            routing_key='default',                     
                     properties=pika.BasicProperties(headers=carrier),
                            body=json_message)

В обратном вызове извлеките span:

def _callback(self, ch, method, properties, body):
    span_ctx = tracer.extract(Format.TEXT_MAP, properties.headers)

1 ответ

Я решил это, отправив носитель в заголовок свойств. Тогда я мог бы извлечь span из атрибута свойств обратного вызова

В отправителе:

channel.basic_publish(exchange='',
                        routing_key='default',                     
                 properties=pika.BasicProperties(headers=carrier),
                        body=json_message)

В обратном вызове извлеките span:

def _callback(self, ch, method, properties, body):
    span_ctx = tracer.extract(Format.TEXT_MAP, properties.headers)
Другие вопросы по тегам