Class: Shoryuken::Middleware::Server::AutoExtendVisibility::MessageVisibilityExtender

Inherits:
Object
  • Object
show all
Includes:
Util
Defined in:
lib/shoryuken/middleware/server/auto_extend_visibility.rb

Instance Method Summary collapse

Methods included from Util

#elapsed, #fire_event, #logger, #unparse_queues, #worker_name

Instance Method Details

#auto_extend(worker, queue, sqs_msg, body) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/shoryuken/middleware/server/auto_extend_visibility.rb', line 26

def auto_extend(worker, queue, sqs_msg, body)
  queue_visibility_timeout = Shoryuken::Client.queues(queue).visibility_timeout

  Concurrent::TimerTask.new(execution_interval: queue_visibility_timeout - EXTEND_UPFRONT_SECONDS) do
    begin
      logger.debug do
        "Extending message #{worker_name(worker.class, sqs_msg, body)}/#{queue}/#{sqs_msg.message_id} " \
        "visibility timeout by #{queue_visibility_timeout}s."
      end

      sqs_msg.change_visibility(visibility_timeout: queue_visibility_timeout)
    rescue => e
      logger.error do
        'Could not auto extend the message ' \
        "#{worker_name(worker.class, sqs_msg, body)}/#{queue}/#{sqs_msg.message_id} " \
        "visibility timeout. Error: #{e.message}"
      end
    end
  end
end