Module: Sidekiq::Routing::Store

Defined in:
lib/sidekiq/routing/store.rb

Overview

Source of truth for manual route state: a single Redis hash in Sidekiq’s Redis, field = job class name, value = JSON routed_at. These reads are uncached (used by the operator API and Web tab); the middleware hot path uses Sidekiq::Routing.route_for instead.

Constant Summary collapse

HASH_KEY =
"sidekiq:routing:routes"

Class Method Summary collapse

Class Method Details

.allObject

-> { “ClassName” => “mode”=>…, … }



34
35
36
37
# File 'lib/sidekiq/routing/store.rb', line 34

def all
  Sidekiq.redis { |conn| conn.hgetall(HASH_KEY) }
    .transform_values { |raw| JSON.parse(raw) }
end

.delete(name) ⇒ Object



23
24
25
# File 'lib/sidekiq/routing/store.rb', line 23

def delete(name)
  Sidekiq.redis { |conn| conn.hdel(HASH_KEY, name) }
end

.fetch(name) ⇒ Object

-> “mode”=>… or nil



28
29
30
31
# File 'lib/sidekiq/routing/store.rb', line 28

def fetch(name)
  raw = Sidekiq.redis { |conn| conn.hget(HASH_KEY, name) }
  raw && JSON.parse(raw)
end

.set(name, mode:) ⇒ Object



15
16
17
18
19
20
21
# File 'lib/sidekiq/routing/store.rb', line 15

def set(name, mode:)
  value = JSON.dump(
    "mode" => mode.to_s,
    "routed_at" => Time.now.utc.iso8601
  )
  Sidekiq.redis { |conn| conn.hset(HASH_KEY, name, value) }
end