我有一个以"*.txt"为触发条件的fte监视器,每当一个文本文件到达源时,fte会将文件传输到目标,但当一次有10个文件到达源,则fte会同时触发10个传输请求&所有的传输都在排队&卡住了。
请建议如何处理这种情况
好的,我刚刚测试了这个案例:
当四个*.xml文件出现在该目录中时,我想立即从该目录中传输它们。因此,我将监视器设置为*.xml,将传输模式设置为*.xml(请参阅下面的命令)。
使用以下命令创建:
fteCreateTransfer -sa AGENT1 -sm QM.FTE -da AGENT2 -dm QM.FTE -dd c:\workspace\FTE_tests\OUT -de overwrite -sd delete -gt /var/IBM/WMQFTE/config/QM.FTE/FTE_TEST_TRANSFER.xml c:\workspace\FTE_tests\IN\*.xml
fteCreateMonitor -ma AGENT1 -mn FTE_TEST_TRANSFER -md c:\workspace\FTE_tests\IN -mt /var/IBM/WMQFTE/config/TQM.FTE/FTE_TEST_TRANSFER.xml -tr match,*.xml
根据配置的变化,我得到了三个不同的结果:
1) 与命令一样,默认agent.properties:
- 在传输日志中出现4次传输
- 所有4个传输尝试传输所有4个XML文件
- 其中3个部分成功,因为代理无法删除源文件
- 成功地传输了所有文件并删除了所有源文件
好吧,对于文件到文件的传输类型,最终状态实际上是好的——目标目录中有四个文件,因为前一个文件被覆盖了。但使用"文件到队列",我在目标队列中得到了16条消息。
2) fteCreateMonitor命令已修改,参数为"-bs 100",默认为agent.properties:
- 在传输日志中,只有一个传输
- 这次转会取得了部分成功
- 此传输尝试传输16个文件(每个XML四次)
- 代理无法删除任何文件,因此源文件保留在源目录中
所以总的来说,我得到了和第一个结果相同的文件传输总量(16)。甚至没有删除源文件。
3) 与命令一样,agent.properties也使用参数"monitorMaxResourcesInPoll=1"进行了修改:
- 在传输日志中,只有一个传输
- 这次转会取得了成功
- 此传输尝试传输四个文件并成功
- 代理能够删除所有源文件
所以我只能通过这个设置来获得预期的结果。但我仍然不确定monitorMaxResourcesInPoll参数设置为"1"是否合适。
因此,对我来说,答案是:添加
monitorMaxResourcesInPoll=1
到agent.properties。但这与这里发布的其他答案相冲突,所以我现在有点困惑。
在版本7.0.4.4 上测试
选中"当在一个轮询间隔内找到多个触发文件时,将文件传输批处理在一起"的框(屏幕三)。
请确保将agent.properties文件中的maxFilesForTransfer设置为足够大的值,但要小心,因为这会影响所有传输。
您也可以在agent.properties文件中设置monitorMaxResourcesInPoll=1。我不建议这样做,有两个原因:1)它会影响所有显示器2)它可能会让你永远无法赶上所有必须传输的文件,这取决于你的音量和轮询间隔。
将您的"批量处理文件传输…"设置为大于10:的值
Max Batch Size = 100