使用Ruby Stomp gem的ActiveMQ - 订阅失败

时间:2013-06-29 14:26:29

标签: ruby activemq stomp

ActiveMQ新手。使用ruby stomp gem。我相信我已成功将消息发布到服务器,因为我在浏览器管理客户端的队列中看到它们。但订阅时没有任何反应,没有错误,没有输出。来自puts的“in subscribe”测试文本永远不会出现在stdout中,msg也不会出现。

我应该为队列使用不同的命名格式吗?

require 'stomp'
port = 61613

client = Stomp::Client.new( 'admin', 'admin', '127.0.0.1', port )
client.publish("/queue/mine2", "hello world!")
puts "about to subscribe"

client.subscribe("/queue/mine2") do |msg|
  puts "in subscribe"
  puts msg
end
client.close

2 个答案:

答案 0 :(得分:1)

我相信你在有机会收到任何东西之前就关闭了客户。

如果client.subscribeclient.close后台线程之间没有抢占,那么侦听新邮件永远不会被运行。

您应该尝试添加

client.join
关闭之前

答案 1 :(得分:0)

虽然client.join成功地为我下了第一条消息,但在运行之后,代码完全停止工作,订阅者只会再次挂起。我以非常类似的方式开始我的客户(只是缺乏信誉):

client = Stomp::Client.new('localhost', 61613)

但我能够通过使用URL来实现它:

client = Stomp::Client.new('stomp://localhost:61613')

有了信用,它看起来像是:

client = Stomp::Client.new('stomp://login:passcode@host:port')

希望这有助于解决此问题的下一个人。