использование ruby и stomp для записи сообщений в ActiveMQ

#ruby #activemq #stomp

#ruby #activemq #stomp

Вопрос:

Я использую stomp для записи сообщений в ActiveMQ из Ruby. Я следую примеру в 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:

Возможно, это не совсем ваша проблема, но поскольку код захлебывается при отправке, это может быть что-то похожее.

По умолчанию localhost: 61616 — это место, где брокер AMQ прослушивает соединения openwire. Вы изменили XML-конфигурацию брокера, чтобы использовать stomp на этом порту? В конфигурации должна быть запись типа:

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