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()
处于堵塞的函数, 都需要等到收到数据或者等待超时才能返回的, 如果你想要快点返回, 就采用不堵塞的方式咯,只不过这样会比较蛋疼