У меня есть несколько клиентов, которые являются как потребителями, так и подписчиками одной темы в брокере сообщений ActiveMQ. Все клиенты используют один и тот же код, фактически они используют точно одно и то же корпоративное приложение, состоящее из: (1) EJB, создающего сообщение, и (2) MDB, потребляющего сообщение.
Проблема в основном в том, что если у меня есть клиенты A, B и C, и если A отправляет сообщение, то A, B, C все получат сообщение. Я не хочу, чтобы А. получал собственное сообщение.
Так что я поиграл с различными решениями, лучшее из которых я придумал, это установить строковое свойство в исходящем сообщении, например, источник = myVeryOwnID . Затем в MDB я установил селектор сообщений, например source <> 'myVeryOwnID' .
К сожалению, это плохое решение, потому что мне нужно было бы установить этот идентификатор в исходном коде (в моем случае, в аннотациях). Это означает, что при развертывании нового клиента я не могу просто передать кому-то файл .EAR, вместо этого мне нужно специально перекомпилировать с уникальным свойством «source».
В идеале я хотел бы использовать MAC-адрес в качестве идентификатора или, возможно, идентификатор, установленный в Glassfish (я использую GFv3).
Любые решения или идеи будут высоко оценены!