Sha256: 32d5b9ffee5e6ac92b06f0ed9b4b734f74f9aab59192882cdc31d26f7348d1c2

Contents?: true

Size: 834 Bytes

Versions: 7

Compression:

Stored size: 834 Bytes

Contents

module WorkerRoulette
  module QueueLatency
    GRANULARITY = 1_000_000

    class Foreman
      def process(work_order, _channel)
        work_order['headers'].merge!(
          "queued_at" => (Time.now.to_f * GRANULARITY).to_i) if work_order.is_a?(Hash) && work_order["headers"]
        work_order
      end
    end

    class Tradesman
      include QueueMetricTracker

      def process(work_order, channel)
        send_latency(work_order["headers"]["queued_at"], channel)
        work_order
      end

      def send_latency(queued_at, channel)
        return unless queued_at

        latency_ns = (Time.now.to_f * GRANULARITY).to_i - queued_at

        if value = calculate_stats(:queue_latency, latency_ns / 1000.0)
          tracker_send(message("queue_latency(ms)", channel, value))
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
nexia_worker_roulette-0.2.9 lib/worker_roulette/queue_latency.rb
nexia_worker_roulette-0.2.8 lib/worker_roulette/queue_latency.rb
nexia_worker_roulette-0.2.7 lib/worker_roulette/queue_latency.rb
nexia_worker_roulette-0.2.6 lib/worker_roulette/queue_latency.rb
nexia_worker_roulette-0.2.5 lib/worker_roulette/queue_latency.rb
nexia_worker_roulette-0.2.4 lib/worker_roulette/queue_latency.rb
nexia_worker_roulette-0.2.3 lib/worker_roulette/queue_latency.rb