2013-06-29 4 views
1

Новое в ActiveMQ. Использование рубинового топора. Я считаю, что я успешно публикую сообщения на сервере, поскольку я вижу их в очереди в моем клиенте администратора браузера. Но на подписке ничего не происходит, нет ошибки, нет вывода. Тестовый текст «в подписке» из puts никогда не появляется в stdout, равно как и msg.ActiveMQ с камнем Ruby Stomp - подписка завершена

Должен ли я использовать другой формат именования для очередей?

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.subscribe и client.close фоновый поток, который прослушивает новые сообщения, никогда не запускается.

Вы должны попробовать добавить

client.join 

перед его закрытием.

+0

Большое спасибо! – bethesdaboys

0

Хотя client.join успешно удалил первое сообщение или два для меня, после его запуска код полностью прекратил работу, и абонент просто повесил трубку. Я начинал мой клиент очень похожим образом (просто не хватает кредитку):

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

Но я был в состоянии заставить его работать, используя URL вместо:

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

С кредиткой, это будет выглядеть что-то вроде:

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

Надеюсь, что это поможет следующему человеку с этой проблемой.

Смежные вопросы