1

ActiveMQ 的新手。使用红宝石跺脚宝石。我相信我已成功将消息发布到服务器,因为我在浏览器管理客户端的队列中看到它们。但是在订阅时没有任何反应,没有错误,没有输出。来自 puts 的“订阅中”测试文本永远不会出现在标准输出中,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
4

2 回答 2

1

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

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

你应该尝试添加

client.join

在关闭它之前。

于 2013-06-29T21:37:21.237 回答
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')

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

于 2015-04-01T15:34:30.893 回答