2017-02-14 15 views
3

私たちは、以下のラバの流れがあります。Mule:異なるコンポーネントのインターフェイスバインディング、重複を避ける方法は?

<flow name="mule-flow-1"> 
    <component> 
     <spring-object bean="springBean_1"/> 
     <binding interface="com.acme.EmailService" method="send"> 
      <vm:outbound-endpoint path="send-email" exchange-pattern="one-way"/> 
     </binding> 
    </component> 
</flow> 

をしかし、今、我々は我々のようにそれを行うことができ、同じEmailService.sendメソッドを使用する新しいのSpring Beanに、新しい流れを紹介したいと思いますので、:

<flow name="mule-flow-2"> 
    <component> 
     <spring-object bean="springBean_2"/> 
     <binding interface="com.acme.EmailService" method="send"> 
      <vm:outbound-endpoint path="send-email" exchange-pattern="one-way"/> 
     </binding> 
    </component> 
</flow> 

ご覧のとおり、EmailService.sendメソッドを2つの異なるフローで2回バインドしました。これは純粋なコードの複製です。

EmailService.sendメソッドをどこかに共通の場所にバインドして、mule-flow-1mule-flow-2でrefを使用することはできますか?

答えて

0

おそらくサブフローを使用できますか?そこでコンポーネントを定義し、再利用したいフローでflow-refを使用します。

<sub-flow name="mule-flow-send"> 
<component> 
    <spring-object bean="springBean_1"/> 
    <binding interface="com.acme.EmailService" method="send"> 
     <vm:outbound-endpoint path="send-email" exchange-pattern="one-way"/> 
    </binding> 
</component> 
</sub-flow> 

し、その後再利用:

<flow name="mule-flow-1"> 
    <flow-ref name="mule-flow-send" doc:name="mule-flow-send"/> 
</flow> 
<flow name="mule-flow-2"> 
    <flow-ref name="mule-flow-send" doc:name="mule-flow-send"/> 
</flow> 
+0

を、問題がある:我々は彼らのボットは、そう、 'EmailService'インタフェースと同様の方法' send'を使用している、 'springBean_1'と' springBean_2'を使用していますあなたの解決策は少し間違っています。 – user471011

関連する問題