2

我正在尝试设计一个多服务器更新部署系统,我在想大二进制字符串是否有任何限制。例如,如果我将一个 100MB 文件中的字符串放入队列中?

谢谢,
佩德罗

4

2 回答 2

6

我已经做到了,我不一定会推荐它。将文件存储在 GridFS (MongoDB) 之类的文件中,然后在 RabbitMQ 消息中引用 _id 可能会更好。然后,您可以使用 Mongo 的界面将文件拉到消费者上,并在完成后将其删除。

我在 GridFS 中运行了大约 20M 个对象,并且它坚如磐石。

于 2012-12-30T19:18:30.713 回答
3

搜索“ RabbitMQ 大文件”发现了大量关于该主题的建议。

标准的反应似乎是理论上它应该能够处理它,但您可能会发现您的经纪人变得没有响应。

如果您拥有队列的两端(发送方/接收方),那么您可以考虑将数据分块为更易于管理的数据“块”。例如 100KB 块。这对您的经纪人会更好。上面的搜索命中之一有一个链接,指向一个用 ruby​​ 编写的“流”发件人,该发件人进行了分块。

如果您不拥有队列的两端,请考虑使用“声明检查”的形式,其中您的消息包含更适合它的存储位置中的大 blob/文件/数据的位置。

这可能是非常有趣的背景信息:http ://rabbitmq.1065348.n5.nabble.com/Can-RabbitMQ-handle-big-messages-tt566.html#a569

于 2012-12-20T19:10:37.543 回答