首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EJB与异步处理

EJB与异步处理
EN

Stack Overflow用户
提问于 2010-06-09 14:35:30
回答 2查看 2.9K关注 0票数 2

在调用EJB方法之后,我需要异步执行一些内容。这一需求似乎在EJB3.1中得到了满足,但不幸的是,我们还没有实现,必须使用3.0版本。

你认为最简单的方法是什么?有没有警告?我可以想到以下方法:

  • JMS (可能是过火了)
  • TimerService (看起来很简单)
  • Spring TaskExecutor (如何配置)

这需要在单个Weblogic服务器上工作。不会有任何巨大的负载或大规模的并行处理,我只是想要它漂亮和简单。

EN

回答 2

Stack Overflow用户

发布于 2010-06-09 14:56:22

您必须首先决定是否要处理异步事务。也就是说,如果常规EJB方法事务失败,异步事件是否仍然会被触发。

JMS和TimerService是事务性的。Spring TaskExecutor,可能不是(我应该再检查一遍)。

使用Timer,您可以延迟执行该事件(即使为0),以便在EJB方法返回后,异步事件立即在后台运行。如果异步事件失败,则计时器服务尝试重新运行它几次。

使用JMS,您无法严格控制何时处理该事件。一旦消息被发送,您就知道它最终将被处理,但是从理论上讲,代理可以推迟它的处理来管理负载。

我不知道您的特定用例,但是如果负载不是问题,而且使用起来很容易,那么使用TimerService似乎是一个很好的选择。

票数 2
EN

Stack Overflow用户

发布于 2010-06-09 17:07:22

WorkManager正是为此目的而设计的,并且本机由WebSphere和WebLogic支持。其他应用服务器也有其他实现。

它设计为在仍然允许服务器管理线程的同时执行异步工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3006832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档