0

我有一个 MQFTE 设置,我们在其中接收来自外部供应商的文件。这些文件被转储到 DMZ 中的服务器上,我们有一个 MQFTE 代理,它从该服务器中挑选文件并放到我们的服务器上。

我们以“集合”的形式接收文件,即每个传入文件都有一个关联的 xml 文件,该文件描述并包含有关文件的元数据。例如 applicationform.pdf 和 applicationform.xml。最终的应用程序根据 xml 中的数据/元数据存储 pdf 文件。

由于每个传入文件都会触发触发器,因此我们在触发器中检查我们是否收到了 XML 文件和内容文件(例如 PDF)。

但是,我认为这不是最好的方法,因为当两个文件同时到达时,它会添加大量预订代码来检查并发问题。有没有办法:

  1. 限制触发器,使其仅在两个文件都到达时触发?在我的研究中这是不可能的。
  2. 在服务器上配置代理,使其一次只接收一个文件?查看文档,似乎可以实现,但只能在发起转移的代理上,而不是在接收转移的代理上?文档提示 monitorMaxResourcesInPoll 和 -bs 参数,但我猜这将在源代理上。由于代理与多个系统共享,这也会影响它们。

此外,我将不胜感激任何提示和建议,甚至是最能满足要求的替代解决方案。

4

1 回答 1

1

我认为没有办法在监视器触发之前检查两个文件是否存在。一些用户所做的是发送他们想要传输的所有文件,然后最后在资源监视器查找的目录中放置一个“标记”文件。因为仅在所有其他文件准备好发送后才写入标记文件,因此监视器仅在文件都在那里时才传输文件。

作为对 2) 的回答,我可以在目标代理上将 maxDestinationTransfers 设置为 1,以限制它一次接收单个传输。如果传输包含多个文件,它们将按顺序传输,因此目的地实际上一次只接收一个文件。monitorMaxResourcesInPoll 只是将监控代理限制为每次监控轮询时它在源目录中解析的文件数。您可以将其设置为 1,但如果您想在同一传输中传输 PDF 和 XML 文件,则需要将其设置为 2。这可能不是您要使用的设置。

于 2015-06-19T14:26:54.360 回答