Adds rescue from database related errors then delay

This commit is contained in:
ari 2023-01-29 12:13:52 +03:00
parent d729bf09cc
commit 7081ca0704
No known key found for this signature in database
GPG Key ID: 1A5559E2E32F1805

View File

@ -47,9 +47,18 @@ def run_task(queue_name:, handler_class:, routing_keys:)
rescue RabbitCarrots::EventHandlers::Errors::NackAndRequeueMessage => _e
Rails.logger.info "Nacked and Requeued message: #{payload}"
channel.nack(delivery_info.delivery_tag, false, true)
# rescue all database errors
rescue ActiveRecord::Error => e
Rails.logger.error "Error handling message: #{payload}. Error: #{e.message}"
# delay for 3 seconds before requeuing
sleep 3
channel.nack(delivery_info.delivery_tag, false, true)
rescue StandardError => e
Rails.logger.error "Error handling message: #{payload}. Error: #{e.message}"
# requeue the message then kill the container
channel.nack(delivery_info.delivery_tag, false, true)
# kill the container with sigterm
Process.kill('SIGTERM', Process.pid)
end
Rails.logger.info 'RUN TASK ENDED'