That is super interesting - thanks for the write up. I'm not aware of anything in the spec about the client id - that sounds like something specific to our implementation. @Richard Monson-Haefel - any thoughts on that?
Jon On Wed, Sep 11, 2019 at 4:39 PM Jonathan S. Fisher <[email protected]> wrote: > 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 | [email protected] > 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. >
