消息驱动Bean - 何时使用

时间:2010-08-17 11:00:31

标签: java java-ee ejb-3.0

javaEE 6 tutorial表示您不能异步使用会话Bean,那么在EJB 3.1中@Asynchronous注释的目的是什么this article表示您可以使用它。有人可以解释何时使用Message Driven Bean吗?

谢谢!

1 个答案:

答案 0 :(得分:6)

消息Bean保证传递,一旦消息在队列中(假设队列是持久的),它就会持久存在,即使发生崩溃,启动时MessageBean也会处理它。在异步会话Bean的情况下,如果发生崩溃,您丢失了消息,除非您自己处理。

在教程中,我不同意:

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

在队列上放置一条消息是一种同步操作(对于任何方法调用也是如此),语义实际上是异步的,因为您将消息放入队列然后忘记了它。我猜他们在这里的意思是你可以从会话bean发送消息然后同步等待响应(可能大部分都不是一个好主意)

要回答有关何时使用消息Bean的问题,您可以使用它们在队列中侦听异步消息,然后使用消息中的信息调用您需要调用的任何逻辑。