2013-06-29 69 views
1

ActiveMQ的新手。使用红宝石跺脚宝石。我相信我已成功地将消息发布到服务器,正如我在浏览器管理客户端的队列中看到的那样。但在订阅上没有任何反应,没有错误,没有输出。来自puts的“in subscribe”测试文本不会出现在stdout中,msg也不会出现。ActiveMQ with Ruby Stomp gem - 订阅失败

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

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 

回答

1

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

如果在client.subscribeclient.close之间没有抢占,则侦听新消息的后台线程永远不会运行。

你应该尝试关闭之前加入

client.join 

+0

非常感谢! – bethesdaboys

0

尽管client.join确实成功地为我拉下了第一个或两个消息,但在运行后,代码完全停止工作,用户只会再次挂起。我开始我的客户在一个非常相似的方式(只是缺乏creds):

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

但我能得到它的工作通过URL来代替:

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

随着creds,它看起来如:

client = Stomp::Client.new('stomp://login:[email protected]:port') 

希望这可以帮助下一个这个问题的人。