1

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

另外,由于我们要传输的文件对于大型存储可以达到 5-6 Mb,我们是否应该排除 MSMQ?在那种情况下,我们应该调查其他建议的技术吗?

干杯!

4

4 回答 4

3

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

然而,MSMQ 被限制为 4MB 的消息大小,在 NServiceBus 中有两种方法可以处理这个问题:

  1. NServiceBus 有一个称为数据总线的概念,它接收消息中的大附件并使用另一种方法可靠地传输它们。这是由基础设施处理的,就您的消息处理程序而言,数据就在那里。
  2. 您可以将有效负载分解为更小的原子消息并将它们作为普通消息发送。NServiceBus 基础设施将确保它们都到达目的地并得到处理。我会推荐这种方法,除非将整个巨大的数据转储作为一个原子事务处理是绝对关键的。

需要注意的另一件事是,您每晚进行转储这一事实可能是先前系统的限制。使用 NServiceBus 可以更改系统,以便以更即时的方式发送这些信息位,这将始终产生更多最新数据,这对业务来说可能是一个巨大的胜利。

于 2012-09-25T18:59:47.667 回答
2

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

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

于 2012-09-25T17:08:56.057 回答
1

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

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

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

因此,在考虑是否迁移到消息传递时,两个最佳选择是本地迁移到消息传递并完全放弃文件,或者使用在您选择的消息传递提供程序上运行的企业管理文件传输解决方案。如果您希望通过强大的异常处理和报告正确地完成它,那么从长远来看,没有任何现成的 MFT 产品会像您自己开发它那样昂贵。

于 2012-10-17T12:15:27.320 回答
1

如果商店位于不同的网络上并通过 Internet 进行通信,则 MSMQ 不是一个真正的选择。NServiceBus 提供了网关的概念,它允许通过 HTTP 或 HTTPS 异步传输 MSMQ 消息。

于 2012-09-26T07:47:22.923 回答