我在一家数字标牌公司工作,我们向网络上的各种机器发送大量动画/视频。我们过去使用 ftp 将文件从服务器应用程序(这是我们的内容管理系统)发送到播放内容的机器。
是否可以在我们发送大文件(有些视频可能有 GB 或更大)的环境中使用 RabbitMQ?大多数文件都非常小,但偶尔我们会发送大视频。
另外一些播放器机器将在稍后添加,这意味着队列必须是动态的(即添加播放器以便现在我们可以向其发送内容)。 RabbitMQ可以这样配置吗? (从我看到的演示中,您必须在服务器和客户端应用程序启动之前预先创建队列)。
我们还可以确保文件发送安全,以便发送应用程序在将内容发送到机器之前必须先登录(如 FTP 登录)吗?
最佳答案
为了添加文件的动态使用者您可以在 RabbitMQ 代理之上使用 EasyNetQ 和 publish/subscribe行为。
正如 Russ Cam 所提到的,在谷歌群组中,人们发送了大消息,但这可能会破坏 RabbitMQ 集群。
解决方案可以是 FTP(或任何其他文件传输协议(protocol))和 Messages 之间的混合:
- 每次您的客户端想要传输文件时,它都会向总线发布一条消息,并引用该文件(例如 FTP url)
- 此消息的消费者随后将通过 FTP 连接以下载文件
EasyNetQ 已经为您提供了一个默认的订阅机制,它有助于动态订阅(参见上面的链接)新消费者,而无需提前配置 RabbitMQ。
最后,您可以考虑将文件拆分为许多小的消息 block ,但随后您应该创建一个函数,该函数将在接收器上重新组装文件,否则最糟糕的是,如果您的消费者稍后启动,您可能会丢失一些消息。
关于c# - 我可以使用 RabbitMQ 将大文件分发到多台机器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21419405/