1

我正在尝试通过 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 的文件是什么。

我该怎么做?

4

1 回答 1

1

有两种方法可以做到这一点。如果您可以序列化您的数据,您可以将其作为常规消息发送。因此,如果您可以将数据文件加载为对象,则可以使用 yaml XML 或 Json 将其序列化为文本。并将序列化的文本作为消息发送。并在消费者端反序列化。否则,您可以将主体视为字节数组。字符串是字节数组,因此消息作为文本将毫无意义,但将是您文件的字节表示。

另一种方法是根本不发送文件。相反,每条消息都是一个链接,因此消费者知道在哪里可以找到文件。然后它可以读取或下载文件。

于 2012-12-14T05:07:26.883 回答