我正在尝试使用带参数-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.
有什么建议吗?谢谢
您的理解是正确的,但您遇到的问题是,在传输模板定义XML中,您正在传输源文件"*.XML",这是一个通配符模式,并且您只在单个触发文件"test.run"上匹配。
听起来你想传输你匹配的文件,因为你事先不知道这些。
WebSphere MQ FTE目录资源监视器将在轮询中触发x次,其中x是目录中与触发模式匹配的文件数。然后将这些批处理成若干个transfer x/batchSize。
由于您只在一个文件上匹配,"test.run"资源监视器会触发一次。WebSphere MQ FTE代理处理单个托管传输请求时,您已告知它查找以.XML结尾的任何文件,以便传输所有文件。
在信息中心查看"使用变量替换自定义任务",并在传输模板XML文件中使用该功能。
基本上,您可以在第一个命令(fteCreateTransfer)中将"c:\workspace\FTE_tests\in\*.xml"更改为"c:\workspace \FTE_tests\in\${fileName}",然后将第二个命令(fteCreateMonitor)更改为在同一目录"c:\workshop \FTE_tests\in"中进行监视并匹配"*.xml"。
当资源监视器触发时,它将用它触发的一个文件的名称替换${fileName},并重复x次,因为它将在每个以.xml结尾的文件上触发。如果有16个文件,它将重复16次。
根据你提供的信息,我认为它会给你想要的行为。
如果您需要任何进一步的问题或澄清,请随时询问。
你好,米罗斯拉夫,我似乎无法发表评论,所以我会在这里添加一些内容来回应你的评论。
我很高兴听到建议的改变给了你预期的行为。事实上,不知道要传输的文件的确切名称是很常见的,但通过使用通配符和某些命名约定,您有望配置WebSphereMQFTE资源监视器以提供所需的行为。
当使用某个名称的触发文件(例如"test.run")时,资源监视器只查找该文件,因此对任何其他以.xml结尾的文件一无所知。因此,批处理只适用于资源监视器正在触发/匹配的文件。请记住,fteCreateMonitor命令上的-bs选项用于"每个任务的匹配数",如该命令的信息中心页面中所定义的。所以在第二种情况下,你看到的行为是意料之中的。
我希望这能有所帮助!