Module: Pigeon::HealthCheck::Queue
- Defined in:
- lib/pigeon/health_check/queue.rb
Overview
Queue health check functionality
Class Method Summary collapse
-
.health ⇒ Hash
Check the health of the queue.
-
.queue_status_message(pending_count, age_seconds) ⇒ String
Generate queue status message.
-
.statistics ⇒ Hash
Get queue statistics.
-
.status(stats) ⇒ Array<String, String>
Determine queue status.
Class Method Details
.health ⇒ Hash
Check the health of the queue
9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/pigeon/health_check/queue.rb', line 9 def self.health # Get queue statistics stats = statistics # Determine overall status based on queue depth and age status, = status(stats) { component: "queue", status: status, message: , details: stats } end |
.queue_status_message(pending_count, age_seconds) ⇒ String
Generate queue status message
64 65 66 |
# File 'lib/pigeon/health_check/queue.rb', line 64 def self.(pending_count, age_seconds) "Queue has #{pending_count} pending messages, oldest is #{age_seconds} seconds old" end |
.statistics ⇒ Hash
Get queue statistics
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/pigeon/health_check/queue.rb', line 26 def self.statistics pending_count = Pigeon.("pending") failed_count = Pigeon.("failed") # Get the oldest pending message oldest_pending = Pigeon.("pending") oldest_pending_age = oldest_pending ? (Time.now - oldest_pending.created_at).to_i : 0 { pending_count: pending_count, failed_count: failed_count, oldest_pending_age_seconds: oldest_pending_age, oldest_pending_id: oldest_pending&.id } end |
.status(stats) ⇒ Array<String, String>
Determine queue status
45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/pigeon/health_check/queue.rb', line 45 def self.status(stats) pending_count = stats[:pending_count] age_seconds = stats[:oldest_pending_age_seconds] = (pending_count, age_seconds) if pending_count > 1000 || age_seconds > 3600 # 1 hour ["critical", ] elsif pending_count > 100 || age_seconds > 300 # 5 minutes ["warning", ] else ["healthy", "Queue is processing normally"] end end |