如何通过Ruby访问Mule消息?
使用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"> &
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配置”是什么意思。。。