I have used SQS in the parent's suggested fashion for many years. I feel like your points are overstated. Visibility timeout's "main point" is not to only handle failure nor do the AWS docs themselves state that. AWS's built-in redrive policies have been more than sufficient to correctly handle error scenarios.
> there's no way to ensure that message isn't just processed again by Consumer1 instead of Consumer2!
Correct, but this isn't the job of the pipe. Smart endpoints, dumb pipes.
> there's no way to ensure that message isn't just processed again by Consumer1 instead of Consumer2!
Correct, but this isn't the job of the pipe. Smart endpoints, dumb pipes.