Я не эксперт по этой теме, но так как никто не ответил, я постараюсь объяснить, что я знаю.
Прежде всего, J2EE использует спецификацию JMS в качестве основного механизма публикации / подписки. Существуют различные JMS-брокеры. Важным моментом здесь является то, что некоторые из этих брокеров специально не связаны с каким-либо сервером приложений J2EE и могут работать автономно. Проверьте Apache ActiveMQ, и он хорошо работает как отдельный JMS-брокер. У него есть привязки ко многим языкам. Таким образом, вы можете свободно создавать не J2EE-архитектуру, используя JMS-брокер.
Во-вторых, существуют другие посредники очереди сообщений, которые соответствуют другим стандартам, которые также могут использоваться в архитектуре J2EE. DDS (Служба распространения данных) является примером. Это стандарт OMG, имеющий привязки для Java и, при желании, может использоваться в архитектуре J2EE.
В-третьих, стандарты веб-служб определяют стандарт WS-Notification Broker. Опять же, насколько я знаю, это не является частью J2EE, но поддерживается многими поставщиками SOA.
Таким образом, у вас есть много альтернатив, которые можно свободно смешивать в архитектуре J2EE.
Надеюсь, это поможет.