通过MSMQ发送文件

时间:2012-09-25 09:39:37

标签: ftp msmq message-queue nservicebus file-transfer

在零售场景中,每个商店在一天结束时将其日常交易报告给后端系统。今天,使用FTP将包含每日交易和一些其他元信息的文件从商店传输到后端。我正在调查用其他东西替换FTP。 MSMQ被建议作为替代运输机制。所以我的问题是,我们是否需要编写一个自定义的Windows服务,将每日事务文件粘贴到一个消息对象中并将其发送到路上,或者在MSMQ中是否有任何盒子机制来处理这个问题?

另外,由于我们要传输的文件对于大型商店来说可以达到5-6 Mb,我们应该排除MSMQ吗?在这种情况下,我们应该调查其他任何建议的技术吗?

干杯!

4 个答案:

答案 0 :(得分:3)

对于像这样的情况,NServiceBus为MSMQ提供了一个很好的抽象。您可以获得MSMQ的可靠消息传递方面,以及用于定义消息的非常好的编程模型。

MSMQ仅限于4MB的邮件大小,并且有两种方法可以在NServiceBus中处理这个问题:

  1. NServiceBus有一个名为数据总线的概念,它接收消息中的大附件并使用其他方法可靠地传输它们。这由基础设施处理,就您的消息处理程序而言,数据就在那里。
  2. 您可以将有效负载拆分为较小的原子消息并将其作为普通消息发送。 NServiceBus基础设施将确保它们都到达目的地并进行处理。我建议使用这种方法,除非将整个巨大的数据转储作为一个原子事务处理是绝对关键的。
  3. 另外需要注意的是,您每晚进行转储的事实可能是以前系统的限制。使用NServiceBus,可以更改系统,以便以更直接的方式发送这些信息,这将导致更多的最新数据,这可能是业务的一大胜利。

答案 1 :(得分:2)

您可以查看IBM Sterling Managed File Transfer和WebSphere MQ Managed File Transfer产品。

如果需要消息传递和文件传输功能,则可以考虑使用WebSphere MQ MFT。另一方面,如果您的要求只是文件传输,那么您可以查看Sterling MFT。

答案 2 :(得分:1)

如果商店位于不同的网络上并通过互联网进行通信,那么MSMQ实际上并不是一种选择。 NServiceBus提供了gateway的概念,允许通过HTTP或HTTPS异步传输MSMQ消息。

答案 3 :(得分:1)

通过消息传输传输文件并非易事。如果将整个文件放入单个消息中,则可以获得所需的原子性,但调整消息传递提供程序以获得消息大小的广泛差异可能具有挑战性。如果所有文件大小相同,则每条消息一个是最简单的解决方案。

另一方面,您可以将文件拆分为多个消息,但是您必须按正确的顺序重新组合它们,包括检测和重新发送丢失的段的协议,完整性检查接收到的文件您也可能想要检查传输过程中两端的文件是否都没有变化。

使用这些系统中的任何一个,您还需要系统足够智能,以管理在正常和异常条件下发送和接收文件的处置,记录传输等。

因此,在考虑是否转向消息传递时,两个最佳选项要么是本地移动到消息传递并完全放弃文件,要么使用在您选择的消息传递提供程序上运行的企业托管文件传输解决方案。如果你希望通过强大的异常处理和报告来做正确的MFT产品,那么从长远来看,没有任何现成的MFT产品会花费很多。