I know SQS ain't build for that, but I'm curious is it possible to find messages in a queue that meet some criteria?
I can pull messages in a loop, search the message bodies for some pattern (without even deserializing them), and filter the messages I needed. But then it is possible to end up with an infinite loop - the first messages I read will be back to the queue by the time when I reach the end of the queue...
Extending visibility of the messages possible, but how do I know exactly how long it will take to scan the entire queue, and for how long should I extend the visibility? What if I have literally ten thousand messages in there?
Is there any workaround here? I need to scan the queue for some messages, and delete those...
Short answer: no.
Queues are designed for things like tasks. A machine grabs a new task (i.e., message) from the queue, executes the task, then deletes the task.
If you're trying to search the messages to filter them, I can't help but wonder if you're using the wrong tool for the job…