2014-07-02 140 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.