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

JD.*_*JD. 5 c# rabbitmq easynetq

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

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

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

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

Gan*_*nto 6

为了添加文件的动态使用者,您可以在 RabbitMQ 代理之上使用 EasyNetQ 并具有发布/订阅行为。

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

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

  • 每次您的客户端想要传输文件时,它都会向总线发布一条消息,其中包含对该文件的引用(例如 FTP url)
  • 然后,该消息的使用者将通过 FTP 连接以下载该文件

EasyNetQ 已经为您提供了一个默认的订阅机制,该机制有助于动态订阅(请参阅上面的链接)新消费者,而无需提前配置 RabbitMQ。

最后,您可以考虑将文件拆分为许多小消息块,但是您应该创建一个函数,它将在接收器上重新组装文件,或者最糟糕的是,如果您的消费者稍后启动,您可能会丢失一些消息。