2016-05-10 5 views
1

で同期イベントを非同期に処理できません。以下のフローがミュール設定にあります。http://

<flow name="SimpleTest" processingStrategy="asynchronous"> 
    <http:listener path="/orders/{id}" config-ref="myRequestConfig" 
     allowedMethods="GET" /> 
    <set-payload value="SUCCESS" /> 
    <flow-ref name="subFlowTest" /> 
    <logger level="ERROR" message="value is : after subflow" /> 
</flow> 
<sub-flow name="subFlowTest"> 
    <scripting:component doc:name="sleep"> 
     <scripting:script engine="groovy"> 
      <scripting:text> 
     java.lang.Thread.sleep(5000); 
    </scripting:text> 
     </scripting:script> 

    </scripting:component> 
</sub-flow> 

同期イベントを非同期に処理できません。サブフローを非同期的に呼びたいので、親フローが非同期である場合、サブフローは自動的に非同期です。なぜこのエラーが発生するのですか?

答えて

2

非同期メッセージプロセッサを使用してサブフローを非同期に呼び出すことができます。

<async doc:name="Async"> 
    <flow-ref name="subFlowTest" doc:name="Call Sub Flow"/> 
</async> 
0

HTTPエンドポイントが自動的にそれを介して同期をこのフローを呼び出しますので、あなたの流れの戦略とその着信エンドポイント間の競合を持っています。定義上、HTTPは同期的です。

問題はHTTPの理解にあります。

希望します。

/T

0

subflowセマンティックは、より多くの関数呼び出しよりもマクロ展開のようなものです。サブフローを呼び出すのではなく、サブフローを使用して、メッセージプロセッサを読みやすくするために別のXML構造に抽出します。実行時には、サブフローのすべてのメッセージプロセッサをコピーしてフロー内に配置する場合と同じです。 scriptコンポーネントを非同期で実行する理由は何ですか?

関連する問題