I am considering using network load balancing to load balance messages between my subscriber instances, instead of using the NServiceBus distributor (which, in essence, is just a software load balancer from what I can say). Each subscriber instance will have a queue with the same name for messages that will be delivered, and there will be a virtual IP address that will pass between subscribers. The publisher will only know about the virtual IP and the queue name.
Here is what I understand as the pros and cons of this:
- PROFI
- No need to install NServiceBus distributor
- One more thing that will need to be monitored / updated when we scale (we already use F5 to balance these machines, and our data center knows this as the back of their hand).
- Another point of failure (yes, NLB may fail, but let him meet it, F5 will be much more stable than the NServiceBus distribution running on Windows)
- You do not need to have a clustered server to have our clustered MSMQ. 2 servers are much more expensive than just adding another VIP to F5.
- Cons
- The NServiceBus Distributor makes it easy for you to track message lag, as you can control one queue on the Distributor. This makes it easy to find out when you need to add more work nodes.
- NServiceBus .. , NLB? ( )
? , NServiceBus, , , .