9

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

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

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

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

4

1 回答 1

4

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

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

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

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

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

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

于 2014-04-17T10:22:47.513 回答