Competing Consumer on Redis Pub/Sub supported?

Pubsub doesn't work that way - the message goes to all connected subscribed clients. However, you could set it up so that the channel is a notification of an update to a list. That way all clients will get the message, but only one can take the item from the list with LPOP.


You need use Redis Streams with XREADGROUP, it's a new feature of Redis.

https://redis.io/topics/streams-intro


Another approach would be to use B*POP from your service instances. If you have lots of clients running B*POP against a list, whenever you LPUSH to it, one of those clients will get the data, but only one.