2011-11-08 27 views
4

我使用stomp從Ruby寫入消息給ActiveMQ。我在下面的例子中,在 http://calliopesounds.blogspot.com/2009/07/working-ruby-stomp-example.html使用ruby和stomp將消息寫入ActiveMQ

,但我發現下面的錯誤,不知道什麼是錯的

/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 

回答

5

這可能不是你確切問題,但由於代碼扼殺發送它可能是類似的東西。

默認情況下,localhost:61616是AMQ代理監聽openwire連接的地方。您是否更換經紀人xml config以在該端口上使用stomp? 該配置應該有一個條目,如:

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