脚本,我能够通过 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 出站终结点来执行此操作。