We are building a multi tenant solution utilizing RabbitMQ as the message broker. The teams that make use of the message broker are internal teams. The solution is multi tenant in that each customer will be logically (and at some layers, physically) separated from one another, however, they are all effectively clones (they'll have the same set of exchanges and queues). Is this a good use-case for virtual hosts? I'm concerned that each virtual host requires a separate connection, so we won't be able to effectively use a connection pool and as the number of services grows that utilizes the broker, the broker itself will have a large number of connections open. We are looking at tens of thousands of tenants potentially.
The alternative we've discussed is having a single virtual host and creating separate queues per tenant. On the publishing side this would allow us to pool connections and channels, but on the consumer side we'd still be creating a large number of subscriptions (due to the separate queues per tenant) so we'd end up with a large number of subscriptions per channel, or a large number of channels per connection (and as I'm sure you're well aware, there are limits here in amqp).
Any advice or suggestions are greatly appreciated. If further details are needed I can provide more. This is our first production use of RabbitMQ and while we intend to evolve the solution as it grows, I'm looking to benefit from the community experience if I can to avoid a headache later.