Обычно вы используете MessageSelectors в реализациях продуктов IBM JMS (как в WebSphere MQ, так и в SIBus). Это эквивалент фильтра, который сканировал бы заголовок сообщения HTTP или SOAP для сетевых протоколов.
Хотя это может быть не то, что вам нужно, но на самом деле это чистый и хорошо продуманный дизайн.
Однако, если вы не хотите использовать MessageSelectors, вам, вероятно, придется создать собственное и «обработать» сообщение с помощью переднего MDB, который сканирует заголовки, а затем перенаправляет сообщение в соответствующую очередь, где только MDB, который заботится о сгруппированных сообщениях, будет обрабатывать их (своего рода шаблон шлюза / селектора сообщений).
Если вы используете «чистый» JMS API, вы можете попросить объект Session создать MessageConsumer с указанной строкой селектора (значение в заголовке), по которой вы хотите фильтровать (опять же, вы должны установить это самостоятельно) .
//assume we have created a JMS Connection and Session object already.
//and looked up the Queue we want already.
MessageConsumer consumerWithSelector = session.createConsumer(queue, groupId);
Это все, что вам дает чистый JMS API. Все остальное зависит только от разработчика технологии обмена сообщениями, которая затем является собственностью их реализации, а не переносимого кода.