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"/>
相关文章
相关标签/搜索