I know there's no definitive answer to this but I'm sure there's a good steer I should be following.
I have ~ 20k terminal devices awaiting product updates, which they have requested via a web Api. The terminal talks to the Web API 'get my products' method which makes a call into our backend. The backend responds by publishing all the relevant products to an exchange which is bound to a queue that the terminal is subscribing to.
My question is whether we're better off having a separate (direct) exchange per terminal which is in turn bound to a single queue for the terminal. Or should we implement it as publish to one (direct) exchange which is bound to ~ 20k queues, each of which has the terminals id as it's routing key, thus letting rabbit do our delivery to the correct queue for us for us.
Any thoughts or pointers gratefully received guys, particularly around resource usage, performance issues and so on.
Steve