Module: BugBunny

Extended by:
Observability
Defined in:
lib/bug_bunny.rb,
lib/bug_bunny/otel.rb,
lib/bug_bunny/client.rb,
lib/bug_bunny/railtie.rb,
lib/bug_bunny/request.rb,
lib/bug_bunny/session.rb,
lib/bug_bunny/version.rb,
lib/bug_bunny/consumer.rb,
lib/bug_bunny/producer.rb,
lib/bug_bunny/resource.rb,
lib/bug_bunny/exception.rb,
lib/bug_bunny/controller.rb,
lib/bug_bunny/remote_error.rb,
lib/bug_bunny/configuration.rb,
lib/bug_bunny/observability.rb,
lib/bug_bunny/routing/route.rb,
lib/bug_bunny/middleware/base.rb,
lib/bug_bunny/middleware/stack.rb,
lib/bug_bunny/routing/route_set.rb,
lib/bug_bunny/consumer_middleware.rb,
lib/bug_bunny/middleware/raise_error.rb,
lib/bug_bunny/middleware/json_response.rb,
lib/generators/bug_bunny/install/install_generator.rb

Overview

lib/bug_bunny/middleware/stack.rb

Defined Under Namespace

Modules: ConsumerMiddleware, Generators, Middleware, OTel, Observability, Routing Classes: BadRequest, Client, ClientError, CommunicationError, Configuration, ConfigurationError, Conflict, Consumer, Controller, Error, InternalServerError, NotAcceptable, NotFound, Producer, PublishNacked, Railtie, RemoteError, Request, RequestTimeout, Resource, RoutingError, SecurityError, ServerError, Session, UnprocessableEntity

Constant Summary collapse

VERSION =
'4.13.0'

Constants included from Observability

Observability::SENSITIVE_KEYS

Class Attribute Summary collapse

Class Method Summary collapse

Methods included from Observability

sensitive_key?

Class Attribute Details

.configurationBugBunny::Configuration

Returns La configuración global actual.

Returns:



35
36
37
# File 'lib/bug_bunny.rb', line 35

def configuration
  @configuration
end

.global_connectionBunny::Session?

Returns La conexión global (Singleton) usada por procesos Rails.

Returns:

  • (Bunny::Session, nil)

    La conexión global (Singleton) usada por procesos Rails.



38
39
40
# File 'lib/bug_bunny.rb', line 38

def global_connection
  @global_connection
end

.routesBugBunny::Routing::RouteSet

Returns El motor global de enrutamiento.

Returns:



44
45
46
# File 'lib/bug_bunny.rb', line 44

def self.routes
  @routes ||= Routing::RouteSet.new
end

Class Method Details

.configure {|config| ... } ⇒ void

This method returns an undefined value.

Configura la librería BugBunny. Si no se ha configurado previamente, inicializa una nueva configuración por defecto.

Yield Parameters:



59
60
61
62
63
# File 'lib/bug_bunny.rb', line 59

def self.configure
  self.configuration ||= Configuration.new
  yield(configuration)
  configuration.validate!
end

.consumer_middlewaresBugBunny::ConsumerMiddleware::Stack

Atajo para ‘BugBunny.configuration.consumer_middlewares`.

Returns:



50
51
52
# File 'lib/bug_bunny.rb', line 50

def self.consumer_middlewares
  configuration.consumer_middlewares
end

.create_connection(**options) ⇒ Bunny::Session

Crea e inicia una nueva conexión a RabbitMQ utilizando la gema Bunny. Mezcla las opciones pasadas explícitamente con la configuración global por defecto.

Parameters:

  • options (Hash)

    Opciones de conexión que sobrescriben la configuración global.

Options Hash (**options):

  • :host (String) — default: '127.0.0.1'

    Host del servidor RabbitMQ.

  • :port (Integer) — default: 5672

    Puerto del servidor.

  • :username (String) — default: 'guest'

    Usuario de conexión.

  • :password (String) — default: 'guest'

    Contraseña.

  • :vhost (String) — default: '/'

    Virtual Host.

  • :logger (Logger)

    Logger para la conexión interna de Bunny.

  • :automatically_recover (Boolean) — default: true

    Si debe reconectar automáticamente.

  • :connection_timeout (Integer) — default: 10

    Tiempo de espera para conectar.

  • :read_timeout (Integer) — default: 10

    Tiempo de espera para lectura.

  • :write_timeout (Integer) — default: 10

    Tiempo de espera para escritura.

  • :heartbeat (Integer) — default: 15

    Intervalo de latidos en segundos.

  • :continuation_timeout (Integer) — default: 15000

    Timeout para operaciones RPC internas.

Returns:

  • (Bunny::Session)

    Una sesión de Bunny ya iniciada (‘start` ya invocado).

Raises:

  • (Bunny::TCPConnectionFailed)

    Si no se puede conectar al servidor.



84
85
86
87
88
89
90
91
92
# File 'lib/bug_bunny.rb', line 84

def self.create_connection(**options)
  conn_options = merge_connection_options(options)
  Bunny.new(conn_options).tap do |conn|
    conn.after_recovery_completed do
      safe_log(:info, 'bug_bunny.connection_recovered', host: conn_options[:host])
    end
    conn.start
  end
end

.disconnectvoid

This method returns an undefined value.

Cierra la conexión global si existe.

Este método es utilizado principalmente por el Railtie para asegurar que los procesos hijos (forks) de servidores como Puma o Spring no hereden la conexión TCP del proceso padre, forzando una reconexión limpia (“Lazy”).



101
102
103
104
105
106
107
108
109
# File 'lib/bug_bunny.rb', line 101

def self.disconnect
  return unless @global_connection

  @global_connection.close if @global_connection.open?
  @global_connection = nil

  @logger = configuration.logger
  safe_log(:info, 'bug_bunny.disconnect')
end