My previous performance tests of jruby JMS vs MRI activemessaging were flawed - I wasn't running in production mode, and my classes were being reloaded every time a message was processed. Rookie mistake. Anyway, here are my latest performance results running in production mode:
It turns out that MRI and activemessaging is faster. Not sure what causes the strange profile in the MRI test (perhaps garbage collection?), but I ran the test twice and came up with very similar profiles.
Thanks very much to my friend and colleague Joe Poon for pointing this out to me. Apologies to anyone who was inconvenienced by this.