VirtualTopics создает очереди для каждого подписчика темы и реплицирует сообщения каждому из них, поэтому он «передает» все сообщения всем подписчикам.
Группы сообщений ActiveMQ предоставляют вам эксклюзивный потребительский поток для данной группы сообщений (отдельный JMSXGroupID). Вы не можете контролировать, какой потребитель выбирает каждую группу, и один и тот же потребительский поток может обрабатывать несколько групп.
Насколько я знаю, если вы установите JMSXGroupID для сообщения, отправленного в VirtualTopic, оно будет поступать в виртуальную очередь каждого подписчика. Однако если из этих очередей обрабатывается несколько потоков (maxConcurrentConsumers> 1), они будут однопоточными для каждой группы сообщений и т. Д.
В целом, если вы хотите, чтобы определенные подписчики обрабатывали только подмножество сообщений, отправленных в тему, используйте селекторы сообщений , чтобы отменить выбор этого подмножества.