Class: Labkit::Middleware::Sidekiq::Context::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/labkit/middleware/sidekiq/context/client.rb

Overview

This middleware for Sidekiq-client wraps scheduling jobs in a context The context will also be added to the sidekiq job in redis so it can be reinstantiated by Sidekiq-server when running the job.

Instance Method Summary collapse

Instance Method Details

#call(_worker_class, job, _queue, _redis_pool) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/labkit/middleware/sidekiq/context/client.rb', line 11

def call(_worker_class, job, _queue, _redis_pool)
  attributes = {}

  # Don't overwrite the correlation_id from the job. A new context
  # will always generate a new correlation_id and we'd rather carry
  # through the correlation_id from the previous job if it is
  # present (eg. for retries).
  attributes[Labkit::Context::CORRELATION_ID_KEY] = job["correlation_id"] if job["correlation_id"]

  Labkit::Context.with_context(attributes) do |context|
    job.merge!(context.to_h)

    yield
  end
end