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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值