I'm looking at the feasibility of moving our existing message queue (Mosquitto MQTT) to the cloud (Amazon SQS).
Our existing service uses the concept of sub-queues so that users don't receive messages that aren't intended for them. For example:
/MyQueueName/user1/
/MyQueueName/user2/
/MyQueueName/user3/
etc.
An application running on the users computer subscribes to the sub-queue relevant to their own userid. Then they only receive messages relevant to them.
SQS doesn't seem to have the ability to create sub-queues, nor does it have the flexibility to filter on message attributes. I could allow all messages to be sent to all computers, then only acted upon if the content is relevant, but this seems wasteful, especially considering we are talking in the region of 20,000+ sub-queues at the moment.
How would this best be accomplished on SQS? I could programmatically create queues in the form on QueuenameUsername, when there is a message to be delivered from the source, or a user subscribes, then delete the queue when a user un-subscribes. However this doesn't seem like the best way to do things; creating thousands of separate queues, and would require some code to manage the creation and, more specifically, deletion of queues at the correct intervals.
Any insight appreciated.
Thanks, Phil