如何存储rabbitMQ消息

时间:2016-06-25 06:41:59

标签: python rabbitmq pika

我正在使用带有python的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()

输出

[x] Sent 'Hello World' 

这是我用来接收来自队列

的消息的代码
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()

输出

[x] Received 'Hello World'

问题是我想将此消息即“Hello World”保存到变量中,然后在我的程序中使用它

但我无法保存信息。

如何将其保存到变量中。 队列中多个消息的解决方案是什么

1 个答案:

答案 0 :(得分:1)

  

问题是我想将此消息即“Hello World”保存到变量中,然后在我的程序中使用它

您已经拥有一个可以在程序中使用的变量 - body。如果您想将基础设施代码(即RabbitMq / pika)与业务逻辑分离,那么您可以简单地声明另一个函数并将body传递给它

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

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

我们的想法是,一旦收到消息,pika就会调用callback,然后body会传递给执行计算的processing_function

如果您难以理解回调功能,我建议您先阅读this