j如何通过 Ruby 访问 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">
    <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 中处理File.open的返回。所以scripting:component在这里会更有序。

最后,如果你需要做的就是写入文件,则可以使用 Mule 中的 File 出站终结点来执行此操作。

最新更新