A developer is implementing a cloud-based messaging system where it's critical that messages are processed at least once, but the processing service is occasionally prone to temporary outages. How should the developer ensure message processing can be retried reliably without overwhelming the service when it comes back online?
Implement retries with exponential backoff and jitter
Create a dedicated error queue for failed message processing attempts
Increase the message visibility timeout to its maximum limit
Set up unlimited immediate retries for all failed messages