我可以使用RabbitMQ将大文件分发到多台机器吗?

时间:2014-01-28 23:52:23

标签: c# rabbitmq easynetq

我在一家数字标牌公司工作,我们向网络上的各种机器发送大量动画/视频。我们过去曾使用ftp将文件从服务器应用程序(我们的内容管理系统)发送到播放内容的计算机。

是否可以在我们发送大文件的环境中使用RabbitMQ(某些视频的大小可能是千兆字节或更大)?大多数文件都很小,但偶尔我们会发送大型视频。

另外一些播放器机器将在稍后添加,这意味着排队必须是动态的(即添加播放器,所以现在我们可以向其发送内容)。 RabbitMQ可以这样配置吗? (从我看过的演示中,你必须在服务器和客户端应用程序启动之前预先创建队列。)

我们也可以保护文件的发送,以便发送应用程序在将内容发送到计算机之前必须登录(如登录FTP)?

1 个答案:

答案 0 :(得分:2)

为了添加文件的动态使用者您可以在RabbitMQ代理上使用EasyNetQ,行为为publish / subscribe

正如Russ Cam所提到的,在google群组中,人们发送了大量消息,但这可能会破坏RabbitMQ群集。

解决方案可以是FTP(或任何其他文件传输协议)与消息之间的混合:

  • 每当您的客户想要传输文件时,它会向该总线发布一条消息,并引用该文件(例如FTP网址)
  • 此消息的消费者将通过FTP连接以下载文件

EasyNetQ已经为您提供了一种默认的订阅机制,可以帮助您在不事先配置RabbitMQ的情况下订阅新的消费者(参见上面的链接)。

最后你可以考虑在许多小消息块中分割文件,但是你应该创建一个函数,它将重新组合接收器上的文件,或者如果你的消费者稍后开始你可能会丢失一些消息。