Как я могу справиться с дубликатом длительного абонента 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 ответ

Решение

Дублирующиеся абоненты длительного пользования должны получить кадр ОШИБКИ, указывающий на проблему. Если после подписки вы получаете кадр ОШИБКИ, вы можете решить проблему там.

Другие вопросы по тегам