应用程序之间的文件传输

File transfer between apps

我们正在构建一个 Python 应用程序以从另一个应用程序接收文件、处理接收到的文件并将处理后的文件发送回该应用程序。

对于文件传输,我们正在考虑选项 SFTP 和消息传送 queue.Below 是我们的要求

  1. 安全传输文件
  2. 确认文件并通知发件人应用程序任何失败
  3. 对文件处理请求进行负载平衡
  4. 能够验证发件人应用程序发送的文件的状态

在这种情况下,您认为 SFTP 或消息队列哪个更适合?我知道每个人都有自己的优点和缺点,但想获得一些见解,并找出是否有什么被忽视了

消息驱动系统几乎完全取决于其代理的质量和可靠性,由于我没有使用 QPID 代理的经验,因此我无法对决策的这一关键方面发表评论。但是,Qpid 使用 AMQP,如果您 运行 遇到所选代理的问题,切换到另一个应该不会太复杂。

至此,我们来看看您的要求。在我看来,您的需求主要是 "natural" 良好消息传递系统的属性,因此您可以正常工作、可靠地实现您的需求,而无需在文件传输协议之上添加机制。

  • 安全传输文件

如果实施得当,AMQP 和 SFTP 的安全性可能相当

  • 确认文件并通知发件人应用程序任何失败

几乎自动为 QPID 使用适当的交付保证模式,通过 sftp 做很麻烦。

  • 对文件处理请求进行负载平衡

让所有消费者都连接到同一个队列也毫不费力,以一种避免消息丢失的方式避免双重消费仅用 sftp 是很难做到的。

  • 能够验证发件人应用程序发送的文件的状态

不能 100% 确定您在这里的意思,但 AMQP 有机制确保发送方确定消息已被代理正确接受,并且文件已被接收方正确接收和处理(手动确认模式)。

尚未提及的一个论点是高可用性:消息代理是许多企业处理链的关键要素,具有广泛的高可用性功能,可以避免停机和消息丢失。