Неожиданное открытие нескольких соединений с фоновым процессором с течением времени

#ruby #rabbitmq

Вопрос:

У меня есть небольшой класс, который я использую для подключения к RabbitMQ с библиотекой под названием bunny

 module ASYNC
  @queue = nil
  @channel = :field_time

  def self.init_exchange
    conn = Bunny.new("amqp://#{ENV['RABBITMQ_USER']}:#{ENV['RABBITMQ_PASS']}@#{ENV['RABBITMQ_HOST']}", client_properties: { connection_name: :app })
    conn.start
    ## open up a channel
    ch = conn.create_channel
    ## create a que on the channel
    @queue = ch.queue(@channel.to_s, durable: true, auto_delete: false)
  end

  def self.do(object = {})
    @queue ||= init_exchange

    @queue.publish(object.to_json, routing_key: @queue.name)
  rescue StandardError => e
    ::WorkerLogger.log(level: :fatal, payload: { error: e.message })
    ::WorkerLogger.log(level: :fatal, payload: { error: e.backtrace })
  end
end
 

После мониторинга моего приложения после выходных я заметил, что у меня 5 открытых подключений, в то время как должно быть только 1

Я использую Grape API в качестве своей платформы HTTP RestAPI, везде в моем приложении вызывается этот класс. Я, к сожалению, ошибочно предположил, что @queue это не будет повторяться случайным образом

введите описание изображения здесь

Как я могу гарантировать, что @queue в среде выполнения используется только один?