JMS异步消息传递实现

 
 本文将对JMS API作一个概述,并通过一个运行在Weblogic服务器上的web例程来介绍如何使用JMS API来异步处理(发送和接收)消息。<o:p></o:p>
异步消息传递和面向服务架构<o:p></o:p>
  在现实中,大多数web请求都是同步处理的。例如,当用户要登入一个网站,首先输入用户名和密码,然后服务器验证登录合法性。如果验证成功,程序将允许该用户进入网站。这里,登录请求在从客户端接收以后被即时处理了。但是有些情况下不得不采用异步调用的方式,这个时候向消息队列发送一个消息,其中的请求是异步执行的,客户端可以立即就返回。<o:p></o:p>
JMS<o:p></o:p>
   如果您使用过JMS代码,您会发现它与JDBCJCA很像。它所包含的样本代码创建或JMS资源对象回溯,使得每一次您需要写一个新类来发送和接收消息时,都具有更好的代码密集性和重复性。以下序列显示了传统JMS实现所包括的步骤:<o:p></o:p>
1.         创建JNDI初始上下文(context)。 <o:p></o:p>
2.         JNDI上下文获取一个队列连接工厂。 <o:p></o:p>
3.         从队列连接工厂中获取一个Quene <o:p></o:p>
4.         创建一个Session对象。 <o:p></o:p>
5.         创建一个发送者(sender)或接收者(receiver)对象。 <o:p></o:p>
6.         使用步骤5创建的发送者或接收者对象发送或接收消息。 <o:p></o:p>
7.         处理完消息后,关闭所有JMS资源。 <o:p></o:p>
您可以看到,步骤6是处理消息的唯一地方。其他步骤都只是管理与实际业务要求无关的JMS资源,但是开发人员必须编写并维护这些额外步骤的代码。 <o:p></o:p>
Spring JMS<o:p></o:p>
   Spring框架提供了一个模板机制来隐藏Java APIs的细节。J2EE开发人员可以使用JDBCTemplateJNDITemplate类来分别访问后台数据库和JEE资源(数据源,连接池)。JMS也不例外。Spring提供JMSTemplate类,因此开发人员不用为一个JMS实现去编写样本代码。接下来是在开发JMS应用程序时Spring所具有一些的优势。<o:p></o:p>
1.         提供JMS抽象API,简化了访问目标(队列或主题)和向指定目标发布消息时JMS的使用。 <o:p></o:p>
2.         JEE开发人员不需要关心JMS不同版本(例如JMS <st1:chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False">1.0.2</st1:chsdate>JMS 1.1)之间的差异。 <o:p></o:p>
3.         开发人员不必专门处理JMS异常,因为Spring为所有JMS异常提供了一个未经检查的异常,并在JMS代码中重新抛出。 <o:p></o:p>
一旦您在JMS应用程序中开始使用Spring,您将会欣赏到它在处理异步消息传递上的简便。Spring JMS框架提供多种Java类,可以轻松实现JMS应用。 表面上看Spring获胜,代码少了很多。但是Spirng JMS的配置文件同样是很复杂。要配置jndiTemplatejndiTemplatesendDestinationreceiveDestinationjmsTemplate等,这里就不列举了。<o:p></o:p>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值