2013-06-29 68 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') 

希望這可以幫助下一個這個問題的人。