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

元气小坏坏 提交于 2019-12-04 14:44:46

Property Entry Point Resolver定义的entry point指向Mule流程中inbound property中某个指定的property设定的方法名(如果这个property没有在property entry point resolver中指定,将使用默认property名method,否则将使用entry point resolver定义的property名)。

         例如,我们在自定义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 Resolver

  <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的方法。

    实际项目运行时,我们可以看到PropertyEntryPointMethod方法被执行,输出日志。

流程图

请求画面

输出日志

说明一点,设置inbound property我们这里使用的是Message Properties Transformer控件,也可以在Java代码中定义,或者使用Property控件。使用Property控件设置inbound property的代码如下:

<set-property propertyName="#[header:INBOUND:method]" 
  value="#['PropertyEntryPointMethod']" doc:name="Property"/> 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!