我试图通过pika(rabbitmq的python驱动程序)通过rabbitmq传递二进制文件
channel.exchange_declare(exchange=exchange_name,type="fanout",durable=True)
channel.queue_declare(queue=queue_name,durable=True)
channel.queue_bind(exchange=exchange_name,queue=queue_name,routing_key="#")
channel.confirm_delivery()
confirmed = channel.basic_publish(exchange=exchange_name,routing_key="",body=data)
数据是我的二进制文件。我想传递文件名作为参数,这样我就可以知道我已经排队到rabbimq的文件。
我该怎么做?
答案 0 :(得分:1)
有两种方法可以做到这一点。如果您可以序列化数据,则可以将其作为常规消息发送。因此,如果您可以将数据文件作为对象加载,则可以使用yaml XML或Json将其序列化为文本。并将序列化文本作为消息发送。并在消费者端反序列化。另外,你可以将身体视为一个字节数组。字符串是字节数组,因此消息将作为文本无意义,但将是对文件的字节重新定义。
另一种方法是根本不发送文件。而是每条消息都是一个链接,因此消费者知道在哪里找到该文件。然后它可以读取或下载文件。