Class: Lepus::Producers::Middlewares::CorrelationId

Inherits:
Middleware
  • Object
show all
Defined in:
lib/lepus/producers/middlewares/correlation_id.rb

Overview

A middleware that auto-generates a correlation_id if missing.

Instance Method Summary collapse

Constructor Details

#initialize(**opts) ⇒ CorrelationId

Returns a new instance of CorrelationId.

Parameters:

  • opts (Hash)

    The options for the middleware.

Options Hash (**opts):

  • :generator (Proc, nil)

    A custom generator proc. Defaults to SecureRandom.uuid.



11
12
13
14
# File 'lib/lepus/producers/middlewares/correlation_id.rb', line 11

def initialize(**opts)
  super
  @generator = opts.fetch(:generator, -> { SecureRandom.uuid })
end

Instance Method Details

#call(message, app) ⇒ Object



16
17
18
19
20
21
22
23
24
# File 'lib/lepus/producers/middlewares/correlation_id.rb', line 16

def call(message, app)
  if message.&.correlation_id.nil? || message..correlation_id.to_s.empty?
    correlation_id = generator.respond_to?(:call) ? generator.call : generator.to_s
     = (message., correlation_id: correlation_id)
    message = message.mutate(metadata: )
  end

  app.call(message)
end