module Emque::Consuming::RetryableErrors
Public Instance Methods
delay_ms_time(retry_count)
click to toggle source
# File lib/emque/consuming/retryable_errors.rb, line 14 def delay_ms_time(retry_count) retry_count * 500 * ( 2 ** retry_count) end
retry_error(delivery_info, metadata, payload, ex)
click to toggle source
# File lib/emque/consuming/retryable_errors.rb, line 18 def retry_error(delivery_info, metadata, payload, ex) headers = metadata[:headers] || {} retry_count = headers.fetch("x-retry-count", 0) if retry_count <= retryable_error_limit logger.info("Retrying Retryable Error #{ex.class}, with count " + "#{retry_count}") headers["x-retry-count"] = retry_count + 1 headers["x-delay"] = delay_ms_time(retry_count) channel.ack(delivery_info.delivery_tag) delayed_message_exchange.publish(payload, { :headers => headers }) else logger.info("Retryable Error: #{ex.class} ran out of retries at " + "#{retry_count}") channel.nack(delivery_info.delivery_tag) end end
retryable_error_limit()
click to toggle source
# File lib/emque/consuming/retryable_errors.rb, line 10 def retryable_error_limit config.retryable_error_limit end
retryable_errors()
click to toggle source
# File lib/emque/consuming/retryable_errors.rb, line 6 def retryable_errors config.retryable_errors end