Java Message Service (JMS) and MOM

I've been researching Java Message Service (JMS) and the various Message-Oriented Middleware (MOM) and below is a list of what I found. I need to develop a JMS-based application and would like to hear some pros and cons about these MOMs. I would like to go with an open source JMS like jgroups. If you know any other MOMs please let me know. Thank you.

JRMS

iBus//MessageBus

WebLogic JMS

OpenJMS

WBIMB

FioranoMQ

SonicMQ

JGroups

AshnaMQ

JBossMQ

Open3

openadaptor

ActiveMQ

Hermes JMS

JORAM

MantaRay

Presumo

Somnifugi JMS

UberMQ

WebSphere MQ

SunTM ONE

MSMQ

MessageQ

MsgConnect

NetZyme

TIBCO

OpenMOM

D-spheres

xmlBlaster

MQ4CPP

[811 byte] By [xoxa] at [2007-10-2 22:14:07]
# 1

> I've been researching Java Message Service (JMS) and

> the various Message-Oriented Middleware (MOM) and

> below is a list of what I found. I need to develop a

> JMS-based application and would like to hear some

> pros and cons about these MOMs. I would like to go

> with an open source JMS like jgroups. If you know any

> other MOMs please let me know. Thank you.

That's quite a list you've compiled.

I don't have experience with all of them, but I'd have to know more about your particular situation to comment in depth.

Everything that follows is true of all Java EE technologies, not just JMS.

You should choose one that's well-known. If that's a commercial or open source product, pick a market leader. You don't want your solution to be based on technology that's not in common use.

If they all support a JMS standard, that's good. Make sure the one you choose does that.

Open source is appealing because of price, but you've got to be careful. Not all open source projects are equally active. I'd stay away from anything that hasn't been updated in a while or doesn't appear to be very active anymore.They aren't all of equal quality, either. It's good to read about them and look at the source code for yourself to see what you think of their work. If you decide that it doesn't pass your code review, perhaps it won't be a good choice.

JMS is part of Java EE. Why not get it bundled in with the rest of the Java EE stack?

These are all commercial products. I've sorted them according to my personal opinion.

> WebLogic JMS

> WebSphere MQ

> SonicMQ

> FioranoMQ

These are the open source products that I know, ranked according to my opinion.

> JBossMQ

> ActiveMQ

> SunTM ONE

> OpenJMS

I don't know of a bridge between JMS and MSMQ. I don't think this option is available to you in open source. Here's a recent blog about the issue:

http://blogs.msdn.com/smguest/archive/2005/03/17/398134.aspx

http://www.xephon.com/journals/more/MQ

> MSMQ

One last thing: You'll want to look into the Spring framework and its JMS support. You can use POJOs and JMS that way:

http://www.springframework.org

The rest of these are unknown to me.

> JRMS

> iBus//MessageBus

> WBIMB

> JGroups

> AshnaMQ

> Open3

> openadaptor

> Hermes JMS

> JORAM

> MantaRay

> Presumo

> Somnifugi JMS

> UberMQ

> MessageQ

> MsgConnect

> NetZyme

> TIBCO

> OpenMOM

> D-spheres

> xmlBlaster

> MQ4CPP

%

duffymoa at 2007-7-14 1:31:00 > top of Java-index,Java Essentials,New To Java...
# 2

> I don't have experience with all of them, but I'd

> have to know more about your particular situation to

> comment in depth.

Thanks for the feedback. The application is a live auction. I read that eBay is using iBus//MessageBus for their live auctions. I don't have the pricing for that option but I suspect its outside my budget. Is it possible to use JBossMQ for example and upgrade to a high-end solution?

If you were to choose one open source solution for this application which would it be and why?

Thank you.

xoxa at 2007-7-14 1:31:00 > top of Java-index,Java Essentials,New To Java...
# 3

Remember that part of the job is to make it fit the application and organization you are working at and implementing with. Do you use JBoss application servers? if so, the use JBOSSMQ

If not, I personnaly would use Sun JMS because it has some very nice managment and scalability implementations. And support is not very expensive either. You pay for that with open source unless you want to depend on community and yourself only. If so, then look for active community involvement.

As to plug and play on implementations, that depends on how you use it more than the implementation. Any usage that is using specicification level operations only and not vendor specific additions (what you really 'pay' for) then yes you can easily replace one with another unless you code & architect very poorly.

BTW - the use of Spring will make your application less tightly integrated with the implementation as well. That is one of the beauties of that framework.

darteda at 2007-7-14 1:31:00 > top of Java-index,Java Essentials,New To Java...
# 4

> Remember that part of the job is to make it fit the

> application and organization you are working at and

> implementing with. Do you use JBoss application

> servers? if so, the use JBOSSMQ

No application server has been selected. I'm just researching the various JMS options.

> If not, I personnaly would use Sun JMS because it has

> some very nice managment and scalability

> implementations.

I'm looking into Sun JMS. Do you know of any JMS comparison reviews?

Thank you.

xoxa at 2007-7-14 1:31:00 > top of Java-index,Java Essentials,New To Java...
# 5

> These are all commercial products. I've sorted them

> according to my personal opinion.

>

> > WebLogic JMS

> > WebSphere MQ

> > SonicMQ

> > FioranoMQ

Really? What's that based on? Based on performance testing we've done, Fiorano and Sonic are much faster than the other two... like a factor of 10, throuput-wise. Fiorano also has very low latency, on the order of a few hundred ms, even with 10s of publishers at "full throttle".

RadcliffePikea at 2007-7-14 1:31:00 > top of Java-index,Java Essentials,New To Java...
# 6

> Really? What's that based on? Based on performance

> testing we've done, Fiorano and Sonic are much faster

> than the other two...

Here's a 2003 article;

Latest JMS Benchmark Results: FioranoMQ Still the Fastest JMS Server

http://www.sys-con.com/read/37773.htm

"FioranoMQ 7.1 touched top throughput levels, which were 11 times faster than those of Sonic's latest JMS offering. Fiorano's JMS Server, FioranoMQ is the fastest server in the market today. Fiorano was the first company to release a commercial JMS product in September 1998, when Sun Microsystems released the JMS standard, and has since maintained its lead over competitors ..."

The deployment edition price starts at $7500 per CPU.

Another study comparing Sun's MQ and IBM

WebSphere MQ.

www.sun.com/software/products/message_queue/wp_JMSperformance.pdf

"Overall, the Java System Message Queue system had significant performance advantages over IBM

WebSphere MQ. Within the point-to-point tests, Sun抯 solution was 10.5x faster on average, with a

maximum advantage of 2,050% on some tests. For the publish/subscribe tests, Sun抯 product was at

least 6.7x faster on average, with a maximum performance advantage of 2,080%.

The test performance figures lead to one remarkable conclusion ?Sun Java System Message Queue

is significantly more efficient than its counterpart. To quantify the difference, a company would need,

depending on queue or topic architecture, from 6 to 10 computers running IBM MQ to equal 1

computer running Sun MQ."

xoxa at 2007-7-14 1:31:00 > top of Java-index,Java Essentials,New To Java...
# 7

> As to plug and play on implementations, that depends

> on how you use it more than the implementation.

I found this written by Andrew Binstock;

http://www.devx.com/Java/Article/17526/0/page/3

"Since code written for JMS is pretty much portable between implementations, you can take any leading version and work with it to develop and test your code. Most versions limit the number of connections you can make to the JMS server ... enjoy the fact that if you chose the wrong JMS, you will for the first time in computing history be able to change middleware providers without rewriting your applications."

I found another, SwiftMQ.

xoxa at 2007-7-14 1:31:00 > top of Java-index,Java Essentials,New To Java...
# 8
More eloquently saying what I meant. But again is dependent on sticking to specification only code.
darteda at 2007-7-14 1:31:00 > top of Java-index,Java Essentials,New To Java...
# 9

> > These are all commercial products. I've sorted

> them

> > according to my personal opinion.

> >

> > > WebLogic JMS

> > > WebSphere MQ

> > > SonicMQ

> > > FioranoMQ

>

> Really? What's that based on?

To be quite honest, I'm basing it on my familiarity with the product. I don't have any performance numbers at all. 8)

> Based on performance

> testing we've done, Fiorano and Sonic are much faster

> than the other two... like a factor of 10,

> throuput-wise. Fiorano also has very low latency, on

> the order of a few hundred ms, even with 10s of

> publishers at "full throttle".

Sounds like you've got much better data than I ever dreamed of.

I thought I made it clear that this was purely my opinion, but I'm glad you asked. This way I can admit to being a blowhard in public, where EVERYONE can see. 8)

%

duffymoa at 2007-7-14 1:31:00 > top of Java-index,Java Essentials,New To Java...
# 10

> > > These are all commercial products. I've sorted

> > them

> > > according to my personal opinion.

> > >

> > > > WebLogic JMS

> > > > WebSphere MQ

> > > > SonicMQ

> > > > FioranoMQ

> >

> > Really? What's that based on?

>

> To be quite honest, I'm basing it on my familiarity

> with the product. I don't have any performance

> numbers at all. 8)

Yeah, we use BEA quite a bit and it is very nice overall. Stable, robust, etc. Admin can be a bear, but I think that's the way it goes with J2EE servers. I was somewhat surprised to see their performance was far behind some of the other vendors.

> > Based on performance

> > testing we've done, Fiorano and Sonic are much

> faster

> > than the other two... like a factor of 10,

> > throuput-wise. Fiorano also has very low latency,

> on

> > the order of a few hundred ms, even with 10s of

> > publishers at "full throttle".

>

> Sounds like you've got much better data than I ever

> dreamed of.

I was fortunate that we had a bunch of equipment (15 Sun V210s) that came in and was not immediately pressed into service, so I was able to set up a nice test environment to punish some JMS providers. We're in the requirements analysis phase of a large integration project that has some high throughput requirements, and we're looking to do so in a "loosely coupled" manner. Sonic and Fiorano met our requirements, but the others didn't. Interestingly, every one of the open source implementations crashed under heavy punishment. All the commercial vendors survived, well, except our good buddies at Sun, that is. We could've done a lot more testing, though with all the configuration parameters and possible topologies, etc...

Unfortunately, all my machines have been taken away. :-(

> I thought I made it clear that this was purely my

> opinion, but I'm glad you asked. This way I can

> admit to being a blowhard in public, where EVERYONE

> can see. 8)

>

> %

Ah, don't worry, its just a bunch of Java nerds round here, nobody that matters is paying attention.

RadcliffePikea at 2007-7-14 1:31:00 > top of Java-index,Java Essentials,New To Java...
# 11

> Yeah, we use BEA quite a bit and it is very nice

> overall. Stable, robust, etc. Admin can be a bear,

> but I think that's the way it goes with J2EE servers.

> I was somewhat surprised to see their performance was

> far behind some of the other vendors.

How big a debit? Half as fast? We're a WebLogic shop, but we don't do asynch heavily, just the odd queued message here and there.The volume isn't so high that you'd notice a performance problem. (Most of our performance problems are caused by inefficient data access, which is caused by a poor understanding of object-oriented design.)

> I was fortunate that we had a bunch of equipment (15

> Sun V210s) that came in and was not immediately

> pressed into service, so I was able to set up a nice

> test environment to punish some JMS providers. We're

> in the requirements analysis phase of a large

> integration project that has some high throughput

> requirements, and we're looking to do so in a

> "loosely coupled" manner. Sonic and Fiorano met our

> requirements, but the others didn't. Interestingly,

> every one of the open source implementations

> crashed under heavy punishment. All the commercial

> vendors survived, well, except our good buddies at

> Sun, that is. We could've done a lot more testing,

> though with all the configuration parameters and

> possible topologies, etc...

That's some very nice work. You're lucky to have had the chance.

It's especially pertinent in this day and age of SOA and loose coupling, isn't it? We're talking and thinking about it, but no one in our area is doing the fundamental work that you've done.

> Unfortunately, all my machines have been taken away. :-(

Bastards!

> Ah, don't worry, its just a bunch of Java nerds round

> here, nobody that matters is paying attention.

But it's your opinion I care about. 8) Nice work, and thanks for talking about it.

%

duffymoa at 2007-7-14 1:31:00 > top of Java-index,Java Essentials,New To Java...
# 12

Colleagues, nice thread. Lots of good information. I currently use WebSphereMQ. It has decent JMS support although an MDB I am writing is a bit hokey because of the way [url=http://www-128.ibm.com/developerworks/websphere/library/techarticles/0602_currie/0602_currie.html]JMS handles WS-MQ's "groupBy" functionality.[/url]

Good stuff.

filestreama at 2007-7-14 1:31:00 > top of Java-index,Java Essentials,New To Java...
# 13

> I was fortunate that we had a bunch of equipment (15

> Sun V210s) that came in and was not immediately

> pressed into service, so I was able to set up a nice

> test environment to punish some JMS providers.

RadcliffePike, could you post your test results? What JMS providers.did you test? The list is long. Did you test SwiftMQ?

Thank you

xoxa at 2007-7-14 1:31:00 > top of Java-index,Java Essentials,New To Java...
# 14

....

> I was fortunate that we had a bunch of equipment (15

> Sun V210s) that came in and was not immediately

> pressed into service, so I was able to set up a nice

> test environment to punish some JMS providers. We're

> in the requirements analysis phase of a large

> integration project that has some high throughput

> requirements, and we're looking to do so in a

> "loosely coupled" manner. Sonic and Fiorano met our

> requirements, but the others didn't. Interestingly,

> every one of the open source implementations

> crashed under heavy punishment. All the commercial

> vendors survived, well, except our good buddies at

> Sun, that is. We could've done a lot more testing,

> though with all the configuration parameters and

> possible topologies, etc...

>

What versions? We did a major integration with decent throughput and are using SonicMQ (what we have) and persistant queues. We managed to make Sonic choke and had to do some tuning but got around it. I have since tested the new (last years) Sun MS and had no problems so was curious.

darteda at 2007-7-14 1:31:00 > top of Java-index,Java Essentials,New To Java...
# 15

> How big a debit? Half as fast?

Sonic and Fiorano were both network limited (100 mps, full duplex), BEA was about 1/8 of that speed. I did as much parameter tweaking as I could but I didn't find the magic "go fast" button for BEA. BEA offered to send an engineer to do some tweaking, but we didn't have time to do that. Otherwise, BEA was very robust, no crashes or lost messages.

> We're a WebLogic

> shop, but we don't do asynch heavily, just the odd

> queued message here and there.The volume isn't so

> high that you'd notice a performance problem. (Most

> of our performance problems are caused by inefficient

> data access, which is caused by a poor understanding

> of object-oriented design.)

Yeah, we're mostly weblogic here too. We've got a dedicated BEA guy here and they're always very reponsive whenever we have a problem.

Argh, don't get me started on data access problems...

> It's especially pertinent in this day and age of SOA

> and loose coupling, isn't it? We're talking and

> thinking about it, but no one in our area is doing

> the fundamental work that you've done.

Yeah, its a hard problem. I think SOA is sometimes a hard sell to SW engineers, because it gets too bogged down in the technical details of XML and SOAP and all this ****. The subtle points of loose coupling, etc, get lost.

RadcliffePikea at 2007-7-21 8:28:59 > top of Java-index,Java Essentials,New To Java...
# 16

> RadcliffePike, could you post your test results? What

> JMS providers.did you test? The list is long. Did you

> test SwiftMQ?

Sorry, I can't post my results. Evaluation licenses usually restrict you from publishing the results of benchmarks.

We tested:

Sonic 6.1

Fiorano 8.01

BEA 9.0 and 8.1

Sun ONE.. don't have the version in front of me.

JBoss 4

JORAM

MantaRay

I think we may have tried a couple of the open source ones, but like I say they all crashed. We couldn't get evaluation versions of Websphere or TIBCO for Solaris.

RadcliffePikea at 2007-7-21 8:28:59 > top of Java-index,Java Essentials,New To Java...
# 17

> What versions? We did a major integration with

> decent throughput and are using SonicMQ (what we

> have) and persistant queues. We managed to make

> Sonic choke and had to do some tuning but got around

> it. I have since tested the new (last years) Sun MS

> and had no problems so was curious.

Ah, this is all non-persistent messaging, so your results may vary. I don't have the version for Sun we used in front of me, but I don't think it was the latest and greatest.

RadcliffePikea at 2007-7-21 8:28:59 > top of Java-index,Java Essentials,New To Java...
# 18
RadcliffPike, I didn't want to be so bold as to ask you to post benchmarks. I see someone has beaten me to it.But one question: were you using WebLogic 9.1? Any possibility that tuning could have helped?I only ask due to my blind bias towards WebLogic. Thanks.%
duffymoa at 2007-7-21 8:28:59 > top of Java-index,Java Essentials,New To Java...
# 19
Sorry, I didn't read the most recent replies before sending this. Thanks.%
duffymoa at 2007-7-21 8:28:59 > top of Java-index,Java Essentials,New To Java...