Class: RequestQueueTime::Middleware

Inherits:
Object
  • Object
show all
Defined in:
lib/request_queue_time/middleware.rb,
lib/request_queue_time/middleware/version.rb

Defined Under Namespace

Classes: Metrics

Constant Summary collapse

VERSION =
"0.2.0"

Instance Method Summary collapse

Constructor Details

#initialize(app) ⇒ Middleware

Returns a new instance of Middleware.



6
7
8
# File 'lib/request_queue_time/middleware.rb', line 6

def initialize(app)
  @app = app
end

Instance Method Details

#call(env) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/request_queue_time/middleware.rb', line 10

def call(env)
  metrics = Metrics.new(env)

  AutoScalingMetrics::Reporter.start if ENV["ECS_SETUP"]

  unless metrics.ignore?
    tags = ["request_method:#{env["REQUEST_METHOD"]}"]

    ActiveSupport::Notifications.instrument("request_queue_time.timings", extra: {
       tags: tags,
       queue_time: metrics.queue_time,
       network_time: metrics.network_time
    })

    env["request_queue_time"] = metrics.queue_time
    env["request_network_time"] = metrics.network_time

    if ENV["ECS_SETUP"]
      AutoScalingMetrics::Reporter.instance.track_request_queue_time(metrics.queue_time)
    end
  end

  @app.call(env)
end