Another option to consider in the future is a distributed queue. This feature will be release soon, and allows a single queue with messages on one or more topics to be spread across a set of consumers in a “sticky” way based on a key value.
This can be used to load balance processing while ensuring that messages associated with the same key are processed in the order they arrived on the queue. So if you use case has a large or varying number of keys that you are spreading in the topic namespace and attracting to different queues for processing, using a distributed queue instead will make maintaining the solution easier.