【发布时间】:2010-08-17 11:00:31
【问题描述】:
javaEE 6 tutorial 表示不能异步使用 Session Bean,那么 EJB 3.1 中 @Asynchronous 注解的目的是什么,this article 表示可以使用它。有人可以解释何时使用消息驱动 Bean 吗?
谢谢!
【问题讨论】:
标签: java jakarta-ee ejb-3.0
javaEE 6 tutorial 表示不能异步使用 Session Bean,那么 EJB 3.1 中 @Asynchronous 注解的目的是什么,this article 表示可以使用它。有人可以解释何时使用消息驱动 Bean 吗?
谢谢!
【问题讨论】:
标签: java jakarta-ee ejb-3.0
Message Beans 保证了传递,一旦消息在队列中(假设队列是持久的),它就会被持久化,即使在崩溃的情况下,MessageBean 也会在启动时处理它。在异步会话 Bean 的情况下,如果发生崩溃,您会丢失消息,除非您自己处理。
在教程中,我不同意:
Session beans allow you to send JMS messages and to receive them synchronously, but not asynchronously.
将消息放入队列是一个同步操作(任何方法调用也是如此),语义实际上是异步的,因为您将消息放入队列然后忘记它。我猜他们的意思是你可以从会话 bean 发送消息,然后同步等待响应(在大多数情况下可能不是一个好主意)
要回答有关何时使用消息 Bean 的问题,您可以使用它们在队列上侦听异步消息,然后使用消息中的信息调用您需要调用的任何逻辑。
【讨论】: