Как добавить открытый интервал в 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)