JMS异步消息传递实现

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

你可能感兴趣的:(Java)