So we found an interesting bug in TomEE when clustering multiple
instances. We use MDBs and Topics to keep caches loosely coherent in our
cluster and reduce the number of trips to the database. If you run the same
MDB on multiple TomEE instances listening on the same topic, you would
expect that every TomEE instance gets a copy of a message sent to the
topic.

Currently this isn't happening, the Topic will behave like a Queue: the
message will only be sent to one of the instances.

It looks like this stems from the way TomEE is generating clientIds for
MDBs when it's not specified explicitly. JMS Requires all listeners on a
topic have a unique client id. TomEE uses the MDB classname as the
clientId, leading to a name collision.

I'm unaware of a requirement in the spec that says what clientId to use on
MDBs has to be the java classname but I've been wrong before.

I plan on fixing this by having tomee prepend the connection id to the
client id, or prepend a random UUID.

cheers,
-- 
Jonathan | exabr...@gmail.com
Pessimists, see a jar as half empty. Optimists, in contrast, see it as half
full.
Engineers, of course, understand the glass is twice as big as it needs to
be.

Reply via email to