2010-08-17 6 views
4

В документе javaEE 6 tutorial говорится, что вы не можете использовать Session Bean асинхронно, тогда в чем цель @Asynchronous annotation в EJB 3.1, поскольку this article говорит, что вы можете использовать его. Может ли кто-нибудь объяснить, когда использовать Message Driven Bean?Message Driven Bean-When To Use

спасибо!

ответ

6

Message Beans имеет гарантированную доставку, когда сообщение находится в очереди (при условии, что очередь является постоянной), она сохраняется и даже в случае сбоя при запуске MessageBean будет обрабатывать ее. В случае асинхронных сессионных бобах в случае сбоя вы потеряли свое сообщение, если только вы не справитесь с этим сами.

В учебнике, я не согласен с:

Session beans allow you to send JMS messages and to receive them synchronously, but not asynchronously. 

Ввод сообщения на очереди является синхронной операцией (Для этого важно, так это любой вызова методы), семантика действительно асинхронная, так как вы ставите сообщение в очереди, а затем забыть об этом. Я предполагаю, что они здесь означают, что вы можете отправить сообщение из сеансового компонента, а затем ждать синхронного ответа (вероятно, это не очень хорошая идея).

Чтобы ответить на вопрос о том, когда использовать Message Beans, вы должны использовать их для прослушивания в очереди для асинхронных сообщений, а затем вызывать любую логику, необходимую для вызова с информацией в сообщении.

Смежные вопросы