Heim > Fragen und Antworten > Hauptteil
Derzeit wird die in C++ eingebettete Python-Funktion verwendet.
Die Python-Funktion ist ein blockierender Typ zum Empfangen von Servernachrichten.
Es gibt keinen Rückgabewert, bis die Überwachung beendet wird.
Eine Rückruffunktion von Python wird aufgerufen, um die empfangene Nachricht zu erhalten
So, wie man Nachrichten an C++ zurückgibt
Der Code lautet wie folgt. Das Problem besteht darin, dass der mit der Pika-Bibliothek geschriebene RabbitMQ-Client die Verwendung der
RabbitMQ-C-Bibliothek vermeiden soll. Jetzt gibt es eine Überlegung, C zu verwenden Schreiben Sie ein anpassbares Python-Modul. Dann rufe ich es in der Rückruffunktion auf, aber es fühlt sich etwas hässlich an.
#!/usr/bin/env python
import pika
import sys
message = ""
def callback(ch, method, properties, body):
message = body
print(method.routing_key)
return message
def consume():
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()
result = channel.queue_declare(exclusive=True)
queue_name = result.method.queue
channel.queue_bind(exchange='normalEx',
routing_key='remote',
queue=queue_name)
print(' [*] Waiting for logs. To exit press CTRL+C')
channel.basic_consume(callback,
queue=queue_name,
no_ack=True)
channel.start_consuming()