我想创建几个使用RabbitMQ和Kombu的Python程序。程序允许生产者读取pdf文件并将它们发送到RabbitMQ数据库,消费者可以在其中接收它们并将它们移动到计算机上的某个目录中。这是我到目前为止的生产者代码:
producer.py
def kombu_producer(fileName, KEY):
with open(fileName, mode='rb') as file:
fileContent = file.read()
connection_string = 'amqp://guest:guest@localhost:5672//'
with kombu.Connection(connection_string) as producer_connection:
channel = producer_connection.channel()
exchange = kombu.Exchange("ExampleExchange", type="fanout")
producer = kombu.Producer(exchange=exchange, channel=channel, routing_key=KEY)
queue = kombu.Queue(name="Example-Queue", exchange=exchange, routing_key=KEY)
queue.maybe_bind(producer_connection)
queue.declare()
producer.publish(fileContent)
producer_connection.release()
file.close()
以下是我未完成的消费者代码:
consumer.py
def kombu_consumer(KEY):
connection_string = 'amqp://guest:guest@localhost:5672//'
with kombu.Connection(connection_string) as consumer_connection:
exchange = kombu.Exchange("ExampleExchange", type="fanout")
queue = kombu.Queue(name="Example-Queue", exchange=exchange, routing_key=KEY)
我还没有创建消费者或回调函数,但我现在不知所措。我正在试图弄清楚如何编码它,以便pdf文件将移动到某个目录。例如,假设生产者向RabbitMQ发送一个名为“example.pdf”的文件。我希望使用者接收文件并将其移动到目录“C:\ Documents \ ConsumerDirectory \”,文件名完整无缺。我觉得我需要对回调函数(def process_file(body,message))做一些事情,我需要使用正文或消息,但我不确定是什么。我是否需要对producer.py做些什么?感谢。
编辑:实际上,也许我问的是错误的问题。由于pdf文件是在生产者中读取并变成一条消息,我如何将消息转回到消费者方面具有相同格式和名称的pdf文件中?