Mule ESB中entry-point-resolver的使用(3) Property Entry Point Resolver

Property Entry Point Resolver定義的entry point指向Mule流程中inbound property中某個指定的property設定的方法名(若是這個property沒有在property entry point resolver中指定,將使用默認property名method,不然將使用entry point resolver定義的property名)。java

         例如,咱們在自定義Component中定義方法PropertyEntryPointMethod 日誌

public class TestComponent
{
   private final Logger logger = LogManager.getLogger(TestComponent.class);

   public void PropertyEntryPointMethod(String message)
   {
		logger.info("PropertyEntryPointMethod's message is:" + message);
   }

再在Flow的Component標籤下指定使用Property Entry Point Resolvercode

<message-properties-transformer doc:name="Message Properties" scope="invocation">
      <add-message-property key="method" value="PropertyEntryPointMethod"/>
  </message-properties-transformer>

  <property-entry-point-resolver acceptVoidMethods="true" />

 因爲沒有在entry point resolver中指定property名稱,在定位entry point時使用了默認的property名method. 所以咱們在前面給這個property設置了咱們設定的方法名PropertyEntryPointMethod(須要保證方法的參數類型和流程傳遞的Mule Message的Payload類型保持一致,不然仍然會定位失敗)。acceptVoidMethod屬性爲true表示在定義entry point時也查找返回類型爲void的方法。orm

    實際項目運行時,咱們能夠看到PropertyEntryPointMethod方法被執行,輸出日誌。xml

流程圖get

請求畫面io

輸出日誌form

說明一點,設置inbound property咱們這裏使用的是Message Properties Transformer控件,也能夠在Java代碼中定義,或者使用Property控件。使用Property控件設置inbound property的代碼以下:class

<set-property propertyName="#[header:INBOUND:method]" 
  value="#['PropertyEntryPointMethod']" doc:name="Property"/>
相關文章
相關標籤/搜索