class Shoryuken::Middleware::Server::AutoExtendVisibility::MessageVisibilityExtender

Public Instance Methods

auto_extend(_worker, queue, sqs_msg, _body) click to toggle source
# File lib/shoryuken/middleware/server/auto_extend_visibility.rb, line 28
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 #{queue}/#{sqs_msg.message_id} visibility timeout by #{queue_visibility_timeout}s"
      end

      sqs_msg.change_visibility(visibility_timeout: queue_visibility_timeout)
    rescue => ex
      logger.error do
        "Could not auto extend the message #{queue}/#{sqs_msg.message_id} visibility timeout. Error: #{ex.message}"
      end
    end
  end
end