如何通过Ruby访问Mule消息?

如何通过Ruby访问Mule消息?,ruby,jruby,mule,Ruby,Jruby,Mule,使用Mule脚本,我可以通过Message变量访问Groovy、JavaScript和Jython中的Mule消息。有了JRuby,我无法: undefined local variable or method `message' for main:Object (NameError) 骡子医生和互联网对此都没有什么可说的。我如何从Ruby访问消息 代码 <scripting:transformer name="SetData" doc:name="Set Data"> &

使用Mule脚本,我可以通过
Message
变量访问Groovy、JavaScript和Jython中的Mule消息。有了JRuby,我无法:

undefined local variable or method `message' for main:Object (NameError)
骡子医生和互联网对此都没有什么可说的。我如何从Ruby访问消息

代码

<scripting:transformer name="SetData" doc:name="Set Data">
    <scripting:script engine="jruby">
        <scripting:text><![CDATA[File.open('/tmp/foo', 'w') { |f| f.puts message.payload }]]></scripting:text>
    </scripting:script>
</scripting:transformer>

Mule绑定变量最终位于全局范围内,因此需要使用
$name
引用它们

就你而言:

<scripting:transformer name="SetData" doc:name="Set Data">
    <scripting:script engine="jruby">
        <scripting:text><![CDATA[
           File.open('/tmp/foo', 'w') { |f| f.puts $message.payload }
        ]]></scripting:text>
    </scripting:script>
</scripting:transformer>

请注意,如果您只需要消息负载,则最好使用
$payload
而不是
$message.payload

此外,您的转换器看起来更像IMO组件:它作用于数据(写入文件),而不是转换数据。它甚至没有明确的返回值(您肯定不想处理
文件的返回。在Mule中打开
。因此
脚本:组件
在这里更合适


最后,如果您只需要写入文件,您可以使用一个可以做到这一点的工具。

我使用的是最新的Mule Studio版本,即1.1.0。它附带JRuby 1.0和JRuby Engine 1.1。不确定“Mule配置”是什么意思。。。