Class: ExisRay::Sidekiq::ServerMiddleware

Inherits:
Object
  • Object
show all
Defined in:
lib/exis_ray/sidekiq/server_middleware.rb

Overview

Middleware de Servidor para Sidekiq.

Se ejecuta envolviendo cada trabajo (job) procesado por un Worker.

Responsabilidades:

  1. Recuperar el Trace ID y contexto de negocio (User, ISP) inyectados por el cliente.

  2. Hidratar el entorno local (Tracer, Current, Reporter).

  3. Limpiar absolutamente todo al finalizar para no contaminar el Thread Pool de Sidekiq.

Instance Method Summary collapse

Instance Method Details

#call(worker, job, _queue) { ... } ⇒ void

This method returns an undefined value.

Intercepta la ejecución del job en el servidor Sidekiq.

Parameters:

  • worker (Object)

    La instancia del worker que procesará el job.

  • job (Hash)

    El payload del trabajo (contiene argumentos y metadatos inyectados).

  • _queue (String)

    El nombre de la cola (ignorado).

Yields:

  • Ejecuta el bloque que procesa el job real.



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/exis_ray/sidekiq/server_middleware.rb', line 21

def call(worker, job, _queue, &block)
  hydrate_tracer(worker, job)
  hydrate_current(job)
  setup_reporter(worker)

  if !ExisRay.configuration.json_logs? && Rails.logger.respond_to?(:tagged)
    Rails.logger.tagged(ExisRay::Tracer.root_id, &block)
  else
    yield
  end
ensure
  ExisRay::Tracer.reset
  cleanup_current
  cleanup_reporter
end