I have made a web form which, upon submit, starts a large process of operations that could result in a large batch of notifications being sent to a number of other users.
In order to avoid an end-user mass-submitting many times during a short time span, I would like to queue up these operations in a queue (or what?) and after a certain delay, only actually submit the latest entry.
I am currently working on AWS and experimenting with various solutions using SQS. Unfortunately I have not been able to find a good solution.
Current solution
Right now, I am doing the following, but I am assuming I am using the wrong tool for the job:
First time the user submits:

Backend receives request, looks if a temporary queue exists in amazon
called something like temp_queue_[user's id] 
If true, delete this queue, then create a new queue, with a
delivery delay of 10    minutes, enqueue the message in this one 
If false, the same as   above, just without deleting a queue first

I then have a separate process which reloads a list of queues every 10-some minutes and actually commits any message they find.

I have played around with other approaches such as trying different delivery delays, various MessageGroupIds and so forth, but I end up with the same problem which is, that one consumer will not be guaranteed to get all messages, and in flight, delayed and invisible messages are not able to be dequeued. 
Furthermore, I cannot "filter" messages from a queue, such as to only receive messages related to only a specific user. So I am definitely starting to think that a queue is the wrong tool. Problem is, I don't know what is.
Best regards,
Hard to understand what exactly you're trying to accomplish, but I think you should let the user submit through the web server to a database, and then have your timed process query that database for 'valid' submissions to process every so many minutes. Timestamp, max() and a user/sessionId within SQL should be the only necessary elements.
Might give one of the managed database offerings on AWS, IBM Cloud, etc. a go if you don't want to sink in the time to running your own database server.
Best of luck.
Delay form submission and commit only the latest