1

我正在尝试使用带有参数 -bs(每个任务匹配)的 IBM Websphere MQ FTE 传输文件。我认为使用此参数会根据其值将传输的总文件拆分为多个任务。例如,我使用“-bs 10”并尝试传输 16 个文件。结果应该是两次单独的传输,一次传输 10 个文件,第二次传输 6 个文件。我对么?但对我来说,结果是一个传输/任务中的所有 16 个文件:/。

如 IBM 文档中所述:通过设置资源监视器的批处理大小(例如,设置为 100),资源监视器将为它匹配的每 100 个文件创建一个新传输。因此,对于 1000 个 .txt 文件,您只会启动 10 个新传输。

我使用这些命令来创建传输。

fteCreateTransfer -sa AGENT1 -sm TQM.FTE -da AGENT2 -dm TQM.FTE -dd /var/MQFTE/test -de overwrite -sd delete -gt /var/IBM/WMQFTE/config/TQM.FTE/FTE_TEST.xml c:\\workspace\\FTE_tests\\IN\\*.xml

fteCreateMonitor -ma AGENT1  -mn FTE_TEST_MONITOR -md c:\\workspace\\FTE_tests -mt /var/IBM/WMQFTE/config/TQM.FTE/FTE_TEST.xml -tr match,test.run -pi 30 -pu seconds -f -c -bs 10.

有什么建议么?谢谢!

4

1 回答 1

1

您的理解是正确的,但您遇到的问题是,在您的传输模板定义 XML 中,您正在传输源文件“*.xml”,这是一个通配符模式,并且您只匹配单个触发器文件“test.run”。

听起来您想传输匹配的文件,因为您事先不知道这些文件。

您的 WebSphere MQ FTE 目录资源监视器将在轮询中触发 x 次,其中 x 是目录中与您的触发模式匹配的文件数。然后这些将被批处理成一些传输 x/batchSize。

由于您只匹配一个文件,因此“test.run”资源监视器会触发一次。当 WebSphere MQ FTE 代理处理单个托管传输请求时,您已告诉它查找以.XML 结尾的所有文件,以便传输所有文件。

查看信息中心的“使用变量替换自定义任务”,并在您的传输模板 XML 文件中使用该功能。

基本上,您可以在第一个命令 (fteCreateTransfer) 中将“c:\workspace\FTE_tests\IN\*.xml”更改为“c:\workspace\FTE_tests\IN\${fileName}”,然后更改第二个命令( fteCreateMonitor) 在同一目录“c:\workspace\FTE_tests\IN”中进行监控并匹配“*.xml”。

当资源监视器触发时,它会将 ${fileName} 替换为已触发的一个文件的名称,并将重复此 x 次,因为它将在每个以 .xml 结尾的文件上触发。如果有 16 个文件,它将执行 16 次。

根据你提供的信息,我认为它会给你你想要的行为。

您需要任何进一步的问题或说明,请随时提出。


嗨 Miroslav,我似乎无法发表评论,所以我会在这里添加一些内容来解决您的评论。

我很高兴听到建议的更改给了您预期的行为。实际上,不知道要传输的文件的确切名称很常见,但是通过使用通配符和某些命名约定,您可以希望配置 WebSphere MQ FTE 资源监视器以提供您想要的行为。

当使用特定名称的触发器文件时,例如,“test.run”,资源监视器只查找该文件,因此对于以 .xml 结尾的任何其他文件一无所知。因此,为什么批处理仅适用于资源监视器正在触发/匹配的文件。请记住,fteCreateMonitor 命令上的 -bs 选项用于“每个任务匹配”,如该命令的信息中心页面中定义的那样。所以在你的第二种情况下,你看到的行为是预期的。

我希望这有帮助!

于 2014-09-08T16:53:56.633 回答