我们有一个持续处理大量文件的现有系统。粗略地说,每天大约有 300 万个文件,大小从几千字节到超过 50 MB 不等。这些文件从收到文件到完成使用,会经历几个不同的处理阶段,具体取决于它们所采用的路径。由于这些文件的内容和格式,它们不能被分解成更小的块。
目前,这些文件通过的工作流是僵化的,并且由具有固定输入和输出的代码决定(在许多情况下,一个订阅者成为一组新文件的发布者)。然而,这种缺乏灵活性开始给我们带来问题,所以我正在寻找某种能够处理新需求的发布/订阅解决方案。
大多数传统的发布/订阅解决方案都将数据包含在实际有效负载中,但潜在的大文件大小超出了许多消息传递平台的限制。此外,我们有多个平台在使用:文件根据其路径在 Linux 和 Windows 层中前进。
有没有人考虑到以下目标的任何设计和/或实施建议?
1. pub 和 sub(Linux 和 Windows)的多平台
2. 持久存储/存储和转发支持
3. 可以处理大型事件有效负载并在所有订阅者都得到服务后适当清理
4. 路由/工作流通过配置完成
5. 订阅者可以根据变化的标准订阅一组过滤的已发布事件(例如,只给我特定类型的文件)
我已经对许多服务总线和 MQ 实现进行了大量研究,但还没有完全确定足够的设计方法来正确评估哪些工具最有意义。感谢您的任何意见。