I’m looking for some expert help from you.
We’ve recently implemented NServiceBus using RabbitMQ which in general is all working fine.
A few words on our setup and challenges:
In many of our development envrionments we are running many different instances of the same software. It is the same software but otherwise not connected and should publish/sub its own events.
We cannot use Conventional Routing Topology because we would then share all events across the different instances (of the same software).
Our solution so far:
Queues are based on a unique prefix that defines that software instance. As example for two instances (soft1, soft2), would have the same queues, exchanges for both (soft1.queue, soft2.queue…).
We have made a Direct Routing Topology where we use the unique key + the type of the event. This creates an exhange per instance (soft1.exchange, soft2.exchange) where subscribers then bind to and get the events based on the type.
All this is working fine but now to our problem:
We want to be able to subscribe to interfaces (such as an IEvent) to all events of that type but because we publish the sub-classes and the routing key is based on this, then the subscribers never get those events if they are not also subscribing to subclasses.
Would you have a good suggestion on how to solve this? It is of course already solved by Conventional Routing Topology but then all events would we shared so we cant use that.
Could you prefix the conventional exchanges?
Looking forward to your feedback and assistance.