2014-07-02 211 views
1

我想在我的骡子流中一次运行一个线程。而且,我想只接受一个接一个的输入,即对于第一次输入,一旦我完成了流程,只有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> 
+0

发布您的配置文件以便更好地理解。 – user1760178

回答

0

从您寻找处理一个接一个文件骡子同步处理策略应该达到目的的情况。

如果你看到骡子捡起多个文件,那么需要查看流程为什么发生这种情况。

更新:

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

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

希望这会有所帮助。

+0

Mule同步处理策略正在工作,如果我使用文件入站端点。但是,如果我使用WMQ inbopund端点,则无法工作。如果有6条消息存在队列中,那么如果我使用同步策略,所有消息都会立即被流提取 – user3675877

+0

根据您的配置更新我的答案。 – user1760178

+0

不。如果我使用同步,那么它不起作用。如果有6条消息存在队列中,那么如果我使用同步策略,所有消息都会立即被流提取。为了避免这种情况,我使用1个线程的排队异步策略。但这也不符合我的要求。请给我建议一些解决方案 – user3675877

0

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