JMS backend should set the JMS message header JMSXGroupID

Description

When trying to setup a failover safe master/slave setup for Search using JMS, it is important that index updates for a given index are only processed by a single consumer (message driven bean). In case there are multiple beans listening to the same JMS queue as part of the failover strategy, without so called message grouping, index updates could be applied out of order, since the queue consumer work independently. Message grouping ensures that all messages for the same group get consumed by the same consumer (while it is alive).

The key for message grouping is to set the standard JMS header JMSXGroupID. This is a per-condition for ActiveMQ as well as HornetQ.

Activity

Hardy FerentschikJuly 8, 2015 at 9:33 AM
Edited

JmsBackendQueueTask actually already sets the index name as a custom string property. At the moment Environment.INDEX_NAME_JMS_PROPERTY is used which is set to HSearchIndexName. The easiest approach seems to be to just change HSearchIndexName to the standard header JMSXGroupID.

Fixed

Details

Assignee

Reporter

Fix versions

Priority

Created July 8, 2015 at 9:28 AM
Updated July 13, 2015 at 11:35 AM
Resolved July 8, 2015 at 4:51 PM

Flag notifications