Actuellement, la fonction python intégrée en C++ est utilisée.
La fonction python est un type de blocage de la réception des messages du serveur.
Il n'y aura aucune valeur de retour jusqu'à la fin de la surveillance.
Lorsqu'un message est reçu pendant la surveillance, une fonction de rappel de python. sera appelé pour obtenir le message reçu
Alors comment renvoyer les messages en C++
EDIT :
Le code est le suivant. L'impression de rappel peut imprimer des données correctes. Le problème est que
le client RabbitMQ écrit à l'aide de la bibliothèque pika ici doit éviter d'utiliser la
bibliothèque RabbitMQ C
Il est désormais envisagé d'utiliser C pour écrivez un module réglable en python
Ensuite, je l'appelle dans la fonction de rappel, mais cela semble un peu moche.
#!/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()
Une fonction bloquée doit attendre de recevoir des données ou d'attendre un délai avant de revenir. Si vous souhaitez revenir rapidement, utilisez une méthode non bloquante, mais ce sera plus pénible
.