Mule ESB-如何在自定义java transformer中计算表达式

Mule ESB-如何在自定义java transformer中计算表达式,mule,Mule,在Mule ESB自定义java转换器中,如何从java代码计算表达式 MuleContext有一个表达式管理器,它具有一个非常有效的求值方法。但是,接受MuleMessage的签名已弃用,而未弃用的版本需要MuleEvent。变压器上没有多路事件,只有多路消息 基本上我想用的是: muleContext.getExpressionManager().evaluate(someValue, message); 访问MuleEvent的另一种方法是使用静态的RequestContext.getE

在Mule ESB自定义java转换器中,如何从java代码计算表达式

MuleContext有一个表达式管理器,它具有一个非常有效的求值方法。但是,接受MuleMessage的签名已弃用,而未弃用的版本需要MuleEvent。变压器上没有多路事件,只有多路消息

基本上我想用的是:

muleContext.getExpressionManager().evaluate(someValue, message);
访问MuleEvent的另一种方法是使用静态的
RequestContext.getEvent()
。然而,这也是不赞成的。我已经成功地使用
ThreadLocal
创建了一个静态变量,通过MessageProcessor在流的早期注入MuleEvent,但它感觉完全错误,可能不是最安全的方法


我错过什么了吗?还有别的办法吗?java文档中不推荐使用的注释中没有太多关于迁移路径的指导。

如果要避免使用不推荐使用的方法,可以使用

evaluate(String expression, String evaluator, MuleMessage message, boolean failIfNull)

如果表达式只是MEL,请使用
null
作为
evaluator
,否则它是表达式的前缀(json等)。

如果要避免使用不推荐的方法,可以使用

evaluate(String expression, String evaluator, MuleMessage message, boolean failIfNull)

如果表达式只是MEL,请使用
null
作为
evaluator
,否则它是表达式的前缀(json等)。

如果要避免使用不推荐的方法,可以使用

evaluate(String expression, String evaluator, MuleMessage message, boolean failIfNull)

如果表达式只是MEL,请使用
null
作为
evaluator
,否则它是表达式的前缀(json等)。

如果要避免使用不推荐的方法,可以使用

evaluate(String expression, String evaluator, MuleMessage message, boolean failIfNull)

如果您的表达式只是MEL,请使用
null
作为
evaluator
,否则它就是表达式的前缀(json等)。

谢谢。这可能会奏效。不推荐使用MuleMessage的方法似乎在将表达式语言从表达式中分离后调用了这个特定的方法。基于MuleEvent的方法似乎只是从事件中提取消息,并在幕后重用不推荐使用的基于muleemessage的方法。我仍然对这个api中的含义感到困惑,但案例已经结束。谢谢。这可能会奏效。不推荐使用MuleMessage的方法似乎在将表达式语言从表达式中分离后调用了这个特定的方法。基于MuleEvent的方法似乎只是从事件中提取消息,并在幕后重用不推荐使用的基于muleemessage的方法。我仍然对这个api中的含义感到困惑,但案例已经结束。谢谢。这可能会奏效。不推荐使用MuleMessage的方法似乎在将表达式语言从表达式中分离后调用了这个特定的方法。基于MuleEvent的方法似乎只是从事件中提取消息,并在幕后重用不推荐使用的基于muleemessage的方法。我仍然对这个api中的含义感到困惑,但案例已经结束。谢谢。这可能会奏效。不推荐使用MuleMessage的方法似乎在将表达式语言从表达式中分离后调用了这个特定的方法。基于MuleEvent的方法似乎只是从事件中提取消息,并在幕后重用不推荐使用的基于muleemessage的方法。我仍然对这个api的意义感到困惑,但案例已经结束。。