云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

大带宽_服务器转发_学生机

小七 141 0

使用JMS的异步任务

大多数cloudbeeejavaee运行时都基于"Web配置文件"。这个概要文件定义了javaeeapi的一个子集,这些api足以满足大多数用例的需要,并使JavaEE更简单、更轻,以供其他供应商实现特别是一些客户请求JMS支持(这不是Web概要文件的一部分)。并没有提供这一点的主要原因是,JMS需要一个集中的消息传递服务来在集群的节点上分发消息。但是经过与客户的讨论,他们想要JMS的主要原因不是为了实现真正的面向消息的中间件(MOM),而是为了实现异步性,一个典型的用例是应用程序必须在注册过程中向用户发送邮件。使这个过程完全按顺序向JavaMail公开应用程序会延迟失败,因此更好的实现方法是立即告诉web用户已经发送了邮件并运行邮件发送代码异步的。这样异步性对于使用基本JRE类实现来说不是一件小事java.util.concurrent.Future是一个低级API,不要让应用程序处理失败来重新运行进程。作为一种解决方法,许多javaee开发人员使用JMS队列来提供持久性和事务性模型,并将异步任务运行器定义为JMS侦听器(消息驱动Bean)。springbatchsimpleasynctaskexecutor提供了另一种实现,但有些人可能更喜欢依赖"标准"阿皮斯。这个看来jmsapi是一种滥用,不管怎样,只要启用JMS,就可以轻松实现异步任务模式。所以Cyrille研究了一个持久的JMS实现,在GlassFish4的"完整"运行时进行了演示,我不确定我们是否有必要鼓励这种模式,如果它被认为是合法的JMS使用,或者如果有人在意的话。但对于迁移到CloudBees的遗留应用程序来说,这是合理的解决方案。尼古拉斯德鲁夫黑客云蜂