Without a local queue that provides long-term message storage, you cannot guarantee message delivery. Using something like RabbitMQ in a cluster with a broker instance locally gives you a solid mechanism for storing messages for delivery. If you need to connect through a network connection to a remote broker to send a long-term message, you risk a network failure.
MSMQ is also a repository and forwarding, but it does not provide cluster routing capabilities. This means that the application must do the work (or have a layer on it, for example MassTransit or NServiceBus, for this).
When I think of TIBCO, I think of a centralized cluster of EMS servers with which application servers interact, instead of a local broker instance. The GUI tools that span EMS and BusinessWorks application servers really push the model into this world.
In any of the distributed cases where messages are stored locally, it is important to make sure that the computer itself is properly equipped for storing messages, with a fast disk and sufficient disk for the expected message size / capacity.
Chris patterson
source share