同步和异步策略

时间:2014-07-02 18:20:49

标签: mule

我想在我的骡子流中一次运行一个线程。而且我还想一个接一个地输入,即,一旦我完成了流程的第一次输入,只有Mule流程才会选择第二个输入。我应该使用哪种策略?

如果我使用同步策略,并且我们在Mule Flow查找的文件夹中有两个或两个以上的文件,它会一次选择所有输入。 如果我一次使用异步策略和1个线程,那么在进行任何其他输入之前我无法完成整个流程。

     <flow name="Catalog_command_Execution" doc:name="Catalog_command_Execution" processingStrategy="synchronous">
    <file:inbound-endpoint path="${inputCAT.path}" responseTimeout="10000" connector-ref="File" doc:name="Catalog File"/>
    <object-to-string-transformer doc:name="File Mapping"/>
    <custom-transformer class="com.tcs.sdm.kcm.cmdExecution.CmdCAT" doc:name="CAT cmd Execution"/>
    <logger message="******************Entered file #[message.inboundProperties.originalFilename]  for command execution has been Processed*********" level="INFO" category="Audit_LogCAT" doc:name="Logger"/>
    <catch-exception-strategy doc:name="Catch Exception Strategy">
        <logger message="*******************************Entered Catalog file for command execution is having error: #[exception.causeException]****************" level="INFO" category="Audit_LOgCAT" doc:name="Logger"/>
    </catch-exception-strategy>
</flow>

       <flow name="CatalogueFlow_AB" doc:name="CatalogueFlow_AB" processingStrategy="allowOneThread">
    <wmq:inbound-endpoint queue="${wmq.queue.nameCT_AB}" doc:name="WMQ" connector-ref="WMQ"/>
    <object-to-string-transformer doc:name="File Mapping"/>
    <logger level="INFO" doc:name="CAT Logger" category="Audit_LogCAT" message="******************Entered Catalogue SOAP File with Province Name AB is Processed from queue*********"/>
    <custom-transformer class="com.tcs.sdm.kcm.catalog.ServiceController_AB" doc:name="Java"/>
    <catch-exception-strategy doc:name="Catch Exception Strategy">
        <logger level="INFO" doc:name="CAT Exception Logger" category="Audit_LogCAT" message="*******************************Entered Catalogue SOAP File with Province Name AB is having error: #[exception.causeException]****************"/>
    </catch-exception-strategy>
</flow>

2 个答案:

答案 0 :(得分:0)

从您正在寻找处理一个文件的场景到另一个Mule Synchronous处理策略应该用于此目的。

如果您看到Mule选择了多个文件,那么需要查看流程为何会发生这种情况。

更新

WMQ入站流的处理策略不同步。然后它应该按预期工作。

<flow name="CatalogueFlow_AB" doc:name="CatalogueFlow_AB" processingStrategy="synchronous">

希望这有帮助。

答案 1 :(得分:0)

旧线程,但您是否尝试将WMQ使用者数设置为1? 流可以是同步的,但这并不意味着入站连接器将以同步方式工作。对于基于文件的连接器,您可以将调度程序设置为非线程,对于WMQ,您应该尝试将使用者设置为1。