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
答案 0 :(得分:1)
我相信你在有机会收到任何东西之前就关闭了客户。
如果client.subscribe
和client.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')
希望这有助于解决此问题的下一个人。