В чем разница между потребителем JMS и Message Driven Beans (MDB)

Существует ли разница между асинхронным JMS (Java Messaging Service) и фактическим MDB (Message Driven Bean). Единственное различие, которое я вижу, это класс MDB имеет аннотацию @MessageDriven, которую асинхронный потребитель JMS не имеет.

Что-нибудь еще, что мне не хватает?

Ответ 1

Ваш MDB работает как потребитель JMS в вашем случае. MDB - это особый термин EJB, а потребитель - термин JMS. Пользователь JMS также может быть сообщенным POJO, который не технически является EJB.

Ответы на комментарии

A1. Да, правильно сказать, что простой JMS-потребитель не может объединяться/управляться как EJB, если только этот JMS-потребитель не управляется такими контейнерами, как контейнеры EJB или Spring.

А2. MDB действительно просто выполняет требование для асинхронной связи с EJB. Когда они основаны на JMS, ваш MDB технически является JMS Consumer. Но MDB может быть не-JMS, а также, например: JCA (Java Connector Architecture) на основе MDB. Вы можете увидеть это сообщение для получения более подробной информации о MDB, отличном от JMS: http://debupanda.blogspot.com/2006/08/using-ejb-30-message-driven-bean-with.html