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

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

Overview

Helper class for extending message visibility

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) ⇒ Shoryuken::Helpers::TimerTask

Creates a timer task that extends message visibility

Parameters:

  • _worker (Object)

    the worker instance (unused)

  • queue (String)

    the queue name

  • sqs_msg (Shoryuken::Message)

    the message

  • _body (Object)

    the parsed message body (unused)

Returns:



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/shoryuken/middleware/server/auto_extend_visibility.rb', line 49

def auto_extend(_worker, queue, sqs_msg, _body)
  queue_visibility_timeout = Shoryuken::Client.queues(queue).visibility_timeout

  Shoryuken::Helpers::TimerTask.new(execution_interval: queue_visibility_timeout - EXTEND_UPFRONT_SECONDS) do
    logger.debug do
      "Extending message #{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 #{queue}/#{sqs_msg.message_id} visibility timeout. Error: #{e.message}"
    end
  end
end