Mdb与EJB 3.1异步方法

时间:2014-11-19 19:02:38

标签: asynchronous ejb jms message-driven-bean

我应该何时使用java消息服务在MDB上选择ejb异步方法以激发异步长时间任务?

2 个答案:

答案 0 :(得分:6)

@Asynchronous仅适用于外部事务需要并行启动多个工作然后等待所有工作(或在后台启动单个工作,在前台执行某些工作,以及然后等待后台工作)。 @Asynchronous不适用于事务性的“一劳永逸”,因为容器可能在异步工作开始执行之前崩溃(在我看来,void EJB异步方法很少有用,可能用于更新内存中的内容高速缓存)。如果您希望保证工作将异步发生而不等待它完成,那么您应该向MDB发送消息或安排EJB计时器。

答案 1 :(得分:1)

@MessageDriven(MDB)是JMS API的一部分。在重试失败的消息消耗,事务支持以及允许您控制消息队列时,JMS有各种各样的附加功能。

unti java-ee-6(ejb 3.1)没有引入

@Asynchronous注释。

假设usecase是java-ee-6容器中的简单异步调用,请使用@Asynchronous(arun guptas blog on this

如果您需要更多,JMS可能是一个选项