#jakarta-ee #ejb #jms #java-ee-5 #message-driven-bean
#джакарта-ee #ejb #jms #java-ee-5 #компонент, управляемый сообщениями
Вопрос:
Есть ли какая-либо разница между асинхронным потребителем JMS (Java Messaging Service) и фактическим MDB (компонентом, управляемым сообщениями). Единственное различие, которое я вижу, заключается в том, что класс MDB имеет @MessageDriven
аннотацию, которой нет у асинхронного потребителя JMS.
Что-нибудь еще, чего мне не хватает?
Ответ №1:
Ваш MDB работает как потребитель JMS в вашем случае. MDB — это специфичный для EJB термин, а consumer — это термин JMS. Потребителем JMS также может быть POJO, управляемый сообщениями, который не является технически EJB.
Ответы на комментарии
A1. Да, правильно сказать, что обычный потребитель JMS не может быть объединен в пул / управляться как EJB, если только этот потребитель JMS не управляется контейнерами, такими как EJB или Spring containers.
A2. MDBs действительно просто выполняет требование для асинхронной связи с EJBS. Если они основаны на JMS, то ваш MDB технически также является потребителем JMS. Но MDB также может быть на основе, отличных от JMS, например: MDB на основе JCA (Java Connector Architecture). Вы можете просмотреть этот пост для получения более подробной информации о MDB, не основанном на JMS: http://debupanda.blogspot.com/2006/08/using-ejb-30-message-driven-bean-with.html
Комментарии:
1. спасибо за ваш ответ… для дальнейшего уточнения того, что вы сказали, я думаю, было бы правильно сказать, что обычный потребитель JMS не может быть объединен в пул / управляться (с точки зрения жизненного цикла) / администрироваться с использованием контейнера EJB, каким может быть MDB? Это правильно?
2. просто любопытно — в каких других инфраструктурах обмена сообщениями могут работать MDBS … кроме JMS? [этот вопрос возник из вашего комментария о том, что «Ваш MDB работает как потребитель JMS в вашем случае»] Я знаю, что они могут, но не видел много ссылок из поиска Google, указывающих на другие параметры, в которых могут использоваться MDB…
3. @rooban bajwa: Ответил на ваши вопросы выше, поскольку для комментариев недостаточно места.