lib/basquiat/adapters/rabbitmq/connection.rb in basquiat-1.5.2 vs lib/basquiat/adapters/rabbitmq/connection.rb in basquiat-1.6.0

- old
+ new

@@ -5,23 +5,31 @@ class RabbitMq # Control the connection to the RabitMQ server. Delegates calls to {Bunny::Connection} class Connection < SimpleDelegator # @param hosts: [Array<String>] IPs or FQDN of the RabbitMQ instances # @param port [Fixnum] Port that the RabbitMQ instances run + # @param vhost [String] Virtual host + # @option tls_options [Boolean] :tls when set to true, will set SSL context up and switch to TLS port (5671) + # @option tls_options [String] :tls_cert string path to the client certificate (public key) in PEM format + # @option tls_options [String] :tls_key string path to the client key (private key) in PEM format + # @option tls_options [Array<String>] :tls_ca_certificates array of string paths to CA certificates in PEM format + # @option tls_options [Boolean] :verify_peer determines if TLS peer authentication (verification) is performed, true by default # @option failover: [Fixnum|Symbol] :heartbeat (:server) Heartbeat timeout to offer to the server # @option failover: [Fixnum] :max_retries (5) Maximum number of reconnection retries # @option failover: [Fixnum] :default_timeout (5) Interval between to reconnect attempts # @option failover: [Fixnum] :connection_timeout (5) Allowed time before a connection attempt timeouts # @option failover: [Fixnum] :read_timeout (30) TCP socket read timeout in seconds # @option failover: [Fixnum] :write_timeout (30) TCP socket write timeout in seconds # @option auth: [String] :user ('guest') # @option auth: [String] :password ('guest') - def initialize(hosts:, port: 5672, failover: {}, auth: {}) - @hosts = hosts - @port = port - @failover = failover - @auth = auth + def initialize(hosts:, port: 5672, vhost: '/', tls_options: {}, failover: {}, auth: {}) + @hosts = hosts + @port = port + @vhost = vhost + @tls_options = tls_options + @failover = failover + @auth = auth end # Creates a channel # @return [Bunny::Channel] def create_channel @@ -53,22 +61,27 @@ def reset @connection = nil __setobj__(nil) end - def connection - @connection ||= Basquiat.configuration.connection || Bunny.new( - hosts: @hosts, + def configuration + { hosts: @hosts, port: @port, + vhost: @vhost, username: @auth.fetch(:user, 'guest'), password: @auth.fetch(:password, 'guest'), heartbeat: @failover.fetch(:heartbeat, :server), recovery_attempts: @failover.fetch(:max_retries, 5), network_recovery_interval: @failover.fetch(:default_timeout, 5), connection_timeout: @failover.fetch(:connection_timeout, 5), read_timeout: @failover.fetch(:read_timeout, 30), write_timeout: @failover.fetch(:write_timeout, 30), - logger: Basquiat.logger + logger: Basquiat.logger }.merge(@tls_options) + end + + def connection + @connection ||= Basquiat.configuration.connection || Bunny.new( + configuration ) __setobj__(@connection) end end end