2

使用 Mule 脚本,我可以通过message变量访问 Groovy、JavaScript 和 Jython 中的 Mule 消息。使用 JRuby 我不能:

undefined local variable or method `message' for main:Object (NameError)

Mule 文档或 Internet 对此都无话可说。如何从 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>
4

1 回答 1

2

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 组件:它作用于数据(写入文件)而不是对其进行转换。它甚至没有明确的返回值(你肯定不想File.open在 Mule 中处理返回。所以scripting:component这里 a 会更有序。

最后,如果您只需要写入文件,您可以使用Mule 的 File 出站端点来执行此操作。

于 2012-05-02T18:50:48.743 回答