我试图设计一个多服务器更新部署系统,我在想是否对大二进制字符串有任何限制。如果我在队列中放置一个100MB文件的字符串?
谢谢,
佩德罗
答案 0 :(得分:4)
我已经完成了,我一定会推荐它。最好将文件存储在GridFS(MongoDB)之类,然后在RabbitMQ消息中引用_id。然后,您可以使用Mongo的界面在消费者上提取文件,并在完成后将其删除。
我在GridFS中运行了大约20M个对象,并且它是rockolid。
答案 1 :(得分:3)
搜索“RabbitMQ Large Files”,就此问题提出了大量建议。
标准回答似乎是理论上它应该能够处理它,但你可能会发现你的经纪人没有反应。
如果您拥有队列的两侧(发件人/收件人),那么您可以考虑将数据分块为更易于管理的“数据块”。例如100KB块。这对你的经纪人来说会更好。上面的搜索命中之一有一个链接到一个用红宝石写的“流媒体”发送者,它做了分块。
如果您不拥有队列的两面,请考虑使用“claim check”形式,其中您的消息包含大型blob /文件/数据的位置存储位置更适合它。
这可能是非常有趣的背景信息:http://rabbitmq.1065348.n5.nabble.com/Can-RabbitMQ-handle-big-messages-tt566.html#a569