Do we need....?
Some of the following features can be provided at the cost of greater complexity for the infrastructure, the client, or both. Other features might be provided quite easily, but at a cost of performance. It might be that some features are needed for messaging outside the desktop, but not within it.
Security?
Encryption?
Guaranteed delivery?
Guaranteed ordering?
Queuing of messages?
Transactions?