Как я могу справиться с дубликатом длительного абонента Stomp?
У меня есть несколько процессов Ruby, которые запускаются и пытаются подключиться к теме через надежного подписчика с помощью Stomp.
Первый процесс завершается успешно и читает сообщения (yay).
Последующие процессы завершаются ошибкой, и неоднократно пытаются восстановить соединение.
Как мои процессы могут обнаружить, что надежный абонент уже подключен, и прекратить попытки подключения?
Возможный фрагмент воображаемого кода:
begin
stomp_client.subscribe()
rescue ClientAlreadySubscribedException
puts "No problem, let's keep doing our other code"
end
Среда:
- Ruby 1.9.3
- Stompgem 1.3.2
Код:
require 'stomp'
# Connect with durable subscription
hash = {
hosts: [
{ host: "localhost", port: 61613, ssl: false }
],
connect_headers: {
:"client-id" => "durableRubyTest"
}
}
stomp_client = Stomp::Client.new( hash )
stomp_client.subscribe "/topic/durable.test.dev",
{"activemq.subscriptionName" => "devtest" } do |msg|
puts "Message! "
puts msg.inspect
end
puts "Connected to stomp, waiting for messages..."
stomp_client.join
1 ответ
Решение
Дублирующиеся абоненты длительного пользования должны получить кадр ОШИБКИ, указывающий на проблему. Если после подписки вы получаете кадр ОШИБКИ, вы можете решить проблему там.