我应该何时使用java消息服务在MDB上选择ejb异步方法以激发异步长时间任务?
答案 0 :(得分:6)
@Asynchronous
仅适用于外部事务需要并行启动多个工作然后等待所有工作(或在后台启动单个工作,在前台执行某些工作,以及然后等待后台工作)。 @Asynchronous
不适用于事务性的“一劳永逸”,因为容器可能在异步工作开始执行之前崩溃(在我看来,void EJB异步方法很少有用,可能用于更新内存中的内容高速缓存)。如果您希望保证工作将异步发生而不等待它完成,那么您应该向MDB发送消息或安排EJB计时器。
答案 1 :(得分:1)
@MessageDriven
(MDB)是JMS API的一部分。在重试失败的消息消耗,事务支持以及允许您控制消息队列时,JMS有各种各样的附加功能。
@Asynchronous
注释。
假设usecase是java-ee-6容器中的简单异步调用,请使用@Asynchronous(arun guptas blog on this)
如果您需要更多,JMS可能是一个选项