使用ruby和stomp将消息写入ActiveMQ

时间:2011-11-08 12:39:30

标签: ruby activemq stomp

我正在使用stomp从Ruby向ActiveMQ写消息。我正在关注的例子 http://calliopesounds.blogspot.com/2009/07/working-ruby-stomp-example.html

但是我得到了以下错误,不确定是什么问题

/Library/Ruby/Gems/1.8/gems/stomp-1.1.10/lib/stomp/connection.rb:462:in `write': Invalid argument (Errno::EINVAL)
    from /Library/Ruby/Gems/1.8/gems/stomp-1.1.10/lib/stomp/connection.rb:462:in `puts'
    from /Library/Ruby/Gems/1.8/gems/stomp-1.1.10/lib/stomp/connection.rb:462:in `_transmit'
    from /Library/Ruby/Gems/1.8/gems/stomp-1.1.10/lib/stomp/connection.rb:462:in `each'
    from /Library/Ruby/Gems/1.8/gems/stomp-1.1.10/lib/stomp/connection.rb:462:in `_transmit'
    from /Library/Ruby/Gems/1.8/gems/stomp-1.1.10/lib/stomp/connection.rb:445:in `synchronize'
    from /Library/Ruby/Gems/1.8/gems/stomp-1.1.10/lib/stomp/connection.rb:445:in `_transmit'
    from /Library/Ruby/Gems/1.8/gems/stomp-1.1.10/lib/stomp/connection.rb:427:in `transmit'
    from /Library/Ruby/Gems/1.8/gems/stomp-1.1.10/lib/stomp/connection.rb:267:in `publish'
    from /Library/Ruby/Gems/1.8/gems/stomp-1.1.10/lib/stomp/client.rb:200:in `publish'
    from utils.rb:10

这是脚本

require 'rubygems'
require 'stomp'

queue = "/queue/msg.in"

puts "Producer for queue #{queue}"

client = Stomp::Client.open "stomp://localhost:61616"
puts client
client.publish queue, "hello!"
client.close

1 个答案:

答案 0 :(得分:5)

这可能不是您的确切问题,但由于代码在发送时出现阻塞,因此可能类似。

默认情况下,localhost:61616是AMQ代理侦听openwire连接的地方。您是否更改了代理xml config以在该端口上使用stomp? 配置应该有一个条目:

<transportConnectors>
   <transportConnector name="stomp" uri="stomp://localhost:61613"/>
</transportConnectors>