Class: Lepus::Consumers::Middlewares::Unique
- Inherits:
-
Middleware
- Object
- Middleware
- Lepus::Consumers::Middlewares::Unique
- Defined in:
- lib/lepus/consumers/middlewares/unique.rb
Overview
A middleware that releases deduplication locks after message processing.
Works in tandem with Lepus::Producers::Middlewares::Unique. The producer acquires a lock and embeds the lock info in message headers. This consumer middleware reads those headers and releases the lock based on the configured release_on conditions.
Constant Summary collapse
- HEADER_LOCK_KEY =
"x-dedupe-lock-key"- HEADER_LOCK_ID =
"x-dedupe-lock-id"- HEADER_LOCK_TTL =
"x-dedupe-lock-ttl"
Instance Method Summary collapse
- #call(message, app) ⇒ Object
-
#initialize(release_on: [:ack]) ⇒ Unique
constructor
A new instance of Unique.
Constructor Details
#initialize(release_on: [:ack]) ⇒ Unique
Returns a new instance of Unique.
29 30 31 32 |
# File 'lib/lepus/consumers/middlewares/unique.rb', line 29 def initialize(release_on: [:ack]) super() @release_on = Array(release_on) end |
Instance Method Details
#call(message, app) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/lepus/consumers/middlewares/unique.rb', line 34 def call(, app) result = app.call() if @release_on.include?(result) release_lock() end result rescue release_lock() if @release_on.include?(:error) raise end |