什么情景下应当考虑使用JMS(Java Message Service )技术

来源:互联网 发布:怎样对重复数据编号 编辑:程序博客网 时间:2024/05/29 19:24

什么情景下应当考虑使用JMS(Java Message Service )技术

        JMS,Java Message Service,是JavaEE平台最重要的规范之一, 也是企业开发中经常使用到的异步技术

一、JMS和MQ的定义      

        Java消息服务 ( JavaMessaging Service, JMS ) 是一种允许应用程序创建、发送、接受和读取消息的Java API 。

         Java 消息服务(JMS))是集成到 J2EE 中的一部分,它使得 MQ 服务可以为任何 J2EE 应用程序所用。即JMS是用于访问MQ中间件的API,在实际应用中JMS+MQ服务器(有时也被称为面向消息的中间件(MOM))相结合来完成消息排队类型的应用程序开发。

         MQ 服务器是什么?用 MQ 的说法,Message(消息)只是一个字节流(这个字节流可以是一个 XML 文档、一个序列化的 Java 对象、一个文本字符串或甚至是一条空消息),对消息的解释留给应用程序域来做,MQ 服务器不对消息施加任何语义和结构限制。消息存储在MQ服务器的消息队列中,MQ 服务器允许您使用JMS将消息加入到队列以及从队列中取走消息。

          JMS,它是一种允许 Java 应用程序通过标准化的接口访问范围广泛的 MQ 服务器(或者,按照 JMS 的说法,是提供程序)的 API,就象 JDBC 允许Java程序通过一个公共接口访问许多不同的数据库服务器一样。基本所有的 J2EE 容器都包含 JMS 提供程序;没有 J2EE 容器也可以使用 JMS;市场上有几种独立的 JMS 提供程序实现。此外,EJB 2.0 规范引入了一种新的 EJB 类型 ― 消息驱动 bean ― 它使得创建利用实体和会话 bean 的消息驱动的组件非常容易。

二、JMS的应用场景

 有一些最适合于使用消息排队的常见用法模式。当在您的应用程序中看到这些模式之一时,您应该考虑使用消息传递。

1.面向事件的应用程序
        高度面向事件的应用非常适于使用 MQ 技术。这些包括财务服务应用程序(请考虑一个证券交易所,它显示股票价格更新,根据价格变化或其它订单的执行来启动交易,报告订单状态等等),新闻发送服务应用程序以及供应链应用程序。在金融市场中,必须对事件进行迅速处理;当发生了重要的事情时,您希望在它一发生时就得到通知。
2.轮询数据库
        数据库在持久存储数据方面是非常优秀的,但是存储瞬时数据并在数据改变时通知我们却不是它们的长处。
虽然它不是高效的,但是轮询数据库却非常常见。每个机场的显示监视器不断轮询数据库以更新它们显示的信息。有许多出纳窗口的银行经常使用电子信号来指示下一个空闲出纳员的位置。电子商务站点内的订单处理系统可能轮询数据库以查看是否有任何新订单需要处理。或者保险索赔工作流系统可能轮询以查看是否有任何新的索赔可以分配给空闲的索赔调解人(claims adjusters)。
所有这些轮询都产生了许多额外的工作。如果有许多实体频繁地轮询(并且如果它们想要迅速地反映数据的更新,它们就必须这么做),就可能给数据库服务器和网络造成很大的负载。在大多数时候,轮询不返回数据,更糟的是,会返回我们已经见过的数据,但又必须再次处理或标识为已经处理过。
        数据库不只是为轮询或事件而设计的。如果在事件发生或数据更改之后必须采取相对迅速的行动,那么异步消息传递是完成这一任务更容易和更有效的方法。无论何时在需要知道更新而轮询数据库时,请考虑使用 JMS 来替代数据库。
3.工作流
        根据工作流门户网站(它是 Workflow Management Coalition 和 Workflow And Reengineering International Association 共同努力的结果)的定义,工作流是“……整个或部分商业过程的自动化,在这一过程中,根据一套过程规则,将文档、信息或任务从一个参与者传递给另一个参与者。”MQ 解决方案特别适合于工作流应用程序(例如文档路由和批准、保险索赔处理等等),这是因为 MQ 技术对如何处理大量使用纸张的办公室里的工作流问题进行了精细的建模,在这种办公室内每个参与者都有一个收件箱和发件箱。
工作流应用程序的特征是有许多代理(代理可以是人,自动处理步骤甚至是物理装备,例如机器和打印机),每个代理都执行任务的一小部分并将其传递给由业务规则所确定的下一代理。请考虑批准和支付电子支出报表这一过程。雇员创建并提交报表,接下来该报表需要由雇员的经理批准(如果美元数目超出了规定的数目,则需要由另外一级管理部门批准)。接下来到了人力资源部,在那里对它进行核查以确定其准确性,还要进行细查以确保该开支是有效的业务支出并符合公司的政策。如果批准了,将会创建支付请求并安排打印支票。这之后,可能进入财务部,在那里单个收费记录将会应用到适当的帐户和成本中心。在这些阶段的每一个,支出报表都可能被弹回给雇员或雇员经理。
        在构建工作流应用程序过程中,主要设计目标是确保工作能够从一个代理迅速地传入到另一个代理,并确保任务不崩溃。MQ 服务器同数据库一起携手工作,它使得向您的应用程序中构建灵活、可伸缩、可扩展的工作流处理变得容易。

参考资料:

1. Java 理论与实践: 应该在下一个企业应用程序中使用 JMS 吗?

http://www.ibm.com/developerworks/cn/java/j-jtp/part1/index.html 

2.  面向Web的JMS应用系统

http://www.knowsky.com/366790.html

3. JMS与Java消息中间件

http://www.javabloger.com/article/spring-jms-j2ee-middleware.html

4.  JMS开源框架ActiveMQ入门介绍

http://java.9sssd.com/javafw/art/666




0 0
原创粉丝点击