JMS

来源:互联网 发布:三菱4da模块编程实例 编辑:程序博客网 时间:2024/04/29 23:25

作用:

       被用来在不同的应用程序间异步通信,这两个实体无须同时运行,也无须位于同一系统上,甚至无须知道另一个实体的标识。

面向事件的程序

      高度面向事件的应用非常适于使用 MQ 技术。这些包括财务服务应用程序(请考虑一个证券交易所,它显示股票价格更新,根据价格变化或其它订单的执行来启动交易,报告订单状态等等),新闻发送服务应用程序以及供应链应用程序。在金融市场中,必须对事件进行迅速处理;当发生了重要的事情时,您希望在它一发生时就得到通知。

轮询数据库

      数据库在持久存储数据方面是非常优秀的,但是存储瞬时数据并在数据改变时通知我们却不是它们的长处。

      虽然它不是高效的,但是轮询数据库却非常常见。每个机场的显示监视器不断轮询数据库以更新它们显示的信息。有许多出纳窗口的银行经常使用电子信号来指示下一个空闲出纳员的位置。电子商务站点内的订单处理系统可能轮询数据库以查看是否有任何新订单需要处理。或者保险索赔工作流系统可能轮询以查看是否有任何新的索赔可以分配给空闲的索赔调解人(claims adjusters)。

      所有这些轮询都产生了许多额外的工作。如果有许多实体频繁地轮询(并且如果它们想要迅速地反映数据的更新,它们就必须这么做),就可能给数据库服务器和网络造成很大的负载。在大多数时候,轮询不返回数据,更糟的是,会返回我们已经见过的数据,但又必须再次处理或标识为已经处理过。

      数据库不是为轮询或事件而设计的。如果在事件发生或数据更改之后必须采取相对迅速的行动,那么异步消息传递是完成这一任务更容易和更有效的方法。无论何时在需要知道更新而轮询数据库时,请考虑使用 JMS来替代数据库。

工作流

      工作流是“……整个或部分商业过程的自动化,在这一过程中,根据一套过程规则,将文档、信息或任务从一个参与者传递给另一个参与者。

      ”MQ 解决方案特别适合于工作流应用程序(例如文档路由和批准、保险索赔处理等等),这是因为 MQ技术对如何处理大量使用纸张的办公室里的工作流问题进行了精细的建模,在这种办公室内每个参与者都有一个收件箱和发件箱。

      工作流应用程序的特征是有许多代理(代理可以是人,自动处理步骤甚至是物理装备,例如机器和打印机),每个代理都执行任务的一小部分并将其传递给由业务规则所确定的下一代理。请考虑批准和支付电子支出报表这一过程。雇员创建并提交报表,接下来该报表需要由雇员的经理批准(如果美元数目超出了规定的数目,则需要由另外一级管理部门批准)。接下来到了人力资源部,在那里对它进行核查以确定其准确性,还要进行细查以确保该开支是有效的业务支出并符合公司的政策。如果批准了,将会创建支付请求并安排打印支票。这之后,可能进入财务部,在那里单个收费记录将会应用到适当的帐户和成本中心。在这些阶段的每一个,支出报表都可能被弹回给雇员或雇员经理。

      在构建工作流应用程序过程中,主要设计目标是确保工作能够从一个代理迅速地传入到另一个代理,并确保任务不崩溃。MQ服务器同数据库一起携手工作,它使得向您的应用程序中构建灵活、可伸缩、可扩展的工作流处理变得容易。

J2EE支持

JMSAPI结构

提供者: J2EE已经实现

客户端:生成和消费消息的组件

消息

被管理对象:将 目的地和连接工厂 绑定到JNDI

业务逻辑:使用消息完成业务逻辑

基本步骤:

发送端:

对QueueConnectionFactory 和Queue执行JNDI查找,创建一个连接和会话; 

创建QueueSender

创建TextMessage

发送消息

在finally中关闭连接、会话和QueueSender

接收端:

执行JNDI查找

创建连接与会话

创建QueueReceiver

启动链接,接收消息

在finally中关闭

启动JMS提供者:j2ee -verbose

创建使用队列

运行发送端和客户端

其他

消息bean支持分布式和并行处理

多个JMS客户程序可以通信,但要求彼此可见对方计算机名,并运行J2EE程序