It looks like this is related to HornetQ somehow since it works with JBoss Messaging 1.4.7 in my preliminary tests.. more investigation required.
Yep, this is HornetQ related. Creating a SmooksAction (in XA-transacted mode) where you do:
System.out.println("I'm gonna sleep now for 10s");
System.out.println("Time to wakeup");
Will result in esbr:routed messages being processed in the following services before Thread.sleep() is done. RuntimeException here will not roll them back. This all works fine with JBoss Messaging. A bug, but in which software?