2016-06-25 2 views
1

J'utilise un serveur RabbitMQ avec Python pour envoyer et recevoir des messages au serveur C'est le code que je utilise pour envoyer un message dans le code.comment stocker les messages rabbitmq

import numpy as np 
import pandas as pd 
import pika 

connection = pika.BlockingConnection(pika.ConnectionParameters(
      host='localhost')) 
channel = connection.channel() 
channel.queue_declare(queue='Q1') 
message = 'Hello World' 
channel.basic_publish(exchange='', 
         routing_key='Q1', 
         body=message) 
# Printing the Sending Confirmation of ID 
print(" [x] Sent %r" % message) 

connection.close() 

Sortie:

[x] Sent 'Hello World' 

C'est le code que je utilise pour recevoir des messages de la file

import pika 
import sys 

connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost')) 
channel = connection.channel() 
channel.queue_declare(queue='Q1') 
def callback(ch, method, properties, body): 
    print(" [x] Received %r" % body) 

channel.basic_consume(callback, queue='Q1', no_ack=True) 
channel.start_consuming() 

Sortie:

[x] Received 'Hello World' 

Le problème est que je veux enregistrer ce message, c'est-à-dire "Hello World" à une variable, puis l'utiliser dans mon programme

Mais je ne suis pas en mesure d'enregistrer le message.

Comment puis-je enregistrer dans une variable. Quelle sera la solution pour plusieurs messages dans la file d'attente

Répondre

1

Le problème est que je veux sauver ce message-à-dire « Bonjour tout le monde » à une variable, puis l'utiliser dans mon programme

Vous » ve a obtenu une variable déjà que vous pouvez utiliser en vous programme - body. Si vous souhaitez dissocier le code d'infrastructure (c'est-à-dire RabbitMq/pika) de la logique métier , vous pouvez simplement déclarer une autre fonction et lui transmettre la body.

def processing_function(message_received): 
    print(" [x] Received %r" % message_received) 

def callback(ch, method, properties, body): 
    processing_function(body) 

L'idée est que les appels pika callback lorsqu'un message est reçu et body est passé à la processing_function qui effectue des calculs.

Si vous avez du mal à comprendre la fonction de rappel, je vous recommande de lire this d'abord.