SonicESB / MQ
I can speak from experience with SonicESB on Linux. It's basically SonicMQ - a JMS compliant MOM - with a process mediation layer on top; that's the service bus.
Pros
- Itinerary-based routing; messages contain their own workflow for what services to visit
- Intra-container messaging; increases performance by routing messages within the ESB container, avoiding the broker entirely.
- Web service endpoints; ESB service may be invoked over HTTP endpoints, bridging the gap between non-Java/JMS clients and the bus.
- Good development tools in eclipse for developing and debugging esb services and processes in Java.
- Administration tools aren't bad either.
Cons
- Transactions don't span service boundaries (may have changed since version 7.5)
- No message retry mechanism; we rolled our own using a utility service and message parameter manipulation (may have changed in 7.5)
- Pricey; licensed by core, so expect to pay for it.
Client Support
In terms of what technologies can send and receive to/from SonicESB, anything Java JMS, that's for sure. Sonic also offers a library in .net/C#/VB for Windows technology, so you can send and receive messages from the bus. This was a huge plus for us since our development teams use RIA's built in C#.
You may want to check out MuleESB, an open source service bus.
Hope it helps,