-
-
Notifications
You must be signed in to change notification settings - Fork 280
Retrying a message
Bruno Antunes edited this page Oct 3, 2018
·
11 revisions
Good news - you don't need to do anything to retry a message, SQS will handle that automatically for you. Basically do not call sqs_msg.delete
if you want to retry a message. The message will become available again when it reaches the visibility_timeout.
class MyWorker
include Shoryuken::Worker
shoryuken_options queue: 'default', auto_delete: true
def perform(sqs_msg, body)
do_something(sqs_msg, body) # raises an exception
end
end
The example above will cause the message to be available again in case the do_something
raises an exception. When auto_delete is set to true
, Shoryuken will auto delete the message in case of the worker doesn't raise an exception.
Check the Dead Letter Queue documentation to prevent the message being processed forever.
Shoryuken also supports exponential backoff, have a look at retry_intervals for more details.