我正在使用带有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”保存到变量中,然后在我的程序中使用它
但我无法保存信息。
如何将其保存到变量中。 队列中多个消息的解决方案是什么
答案 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。