rabbit_carrots/lib/rabbit_carrots/connection.rb

32 lines
963 B
Ruby

require 'singleton'
module RabbitCarrots
class Connection
include ::Singleton
attr_reader :connection
def initialize
@connection = Bunny.new(
host: RabbitCarrots.configuration.rabbitmq_host,
port: RabbitCarrots.configuration.rabbitmq_port,
user: RabbitCarrots.configuration.rabbitmq_user,
password: RabbitCarrots.configuration.rabbitmq_password,
vhost: RabbitCarrots.configuration.rabbitmq_vhost,
automatically_recover: RabbitCarrots.configuration.automatically_recover || true,
network_recovery_interval: RabbitCarrots.configuration.network_recovery_interval || 5,
recovery_attempts: RabbitCarrots.configuration.recovery_attempts || 5,
recovery_attempts_exhausted: -> { Process.kill('TERM', Process.pid) }
)
@connection.start
end
def channel
@channel ||= ConnectionPool.new do
connection.create_channel
end
end
end
end