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"/>
来源:oschina
链接:https://my.oschina.net/u/237688/blog/733442