在Spring系列的第4期也是***一期中,我将介绍Spring JMS(Java消息服务)框架的特性。JMS PG定义了Java 应用程序通过面向消息的中间件(MOM)创建和交换消息的标准途径。
就像在这个系列前面的文章中一样,我将使用一个简单的示例来演示Spring JMS的特性。您将随我一道开发一个点对点的(P2P)基于消息的系统,使用Spring JMS框架通过JMS接口与IBM的WebSphere MQ集成。完成练习后,将可以通过这个系统发送和接收简单的文本消息。
在开始之前,请下载文章的源代码。请参阅参考资料访问Spring框架和IBM WebSphere MQ 5.3。还需要Apache Ant来运行示例应用程序。
Spring JMS
Spring JMS抽象框架简化了JMS API的使用,并与JMS提供者(比如 IBM 的 WebSphere MQ 5.3)平滑地集成。org.springframework.jms.core 包提供了在Spring中使用JMS的核心功能。它的模板类处理资源的创建和释放,简化了JMS的使用。
像其他大多数Spring模板类一样,JMS模板类提供了执行公共操作的helper方法。在需要更复杂应用的情况下,类把处理任务的核心委托给用户实现的回调接口。JMS 类提供了方便的方法,用来发送消息、同步地使用消息以及向用户公开JMS会话和消息的制作者。
以下JMS包和org.springframework.jms.core一起构成了Spring JMS的功能:
org.springframework.jms.support
提供转换 JMSException 的功能。转换代码把检测到的JMSException层次结构转换成未检测到异常的镜像层次结构。
org.springframework.jms.support.converter。
提供 MessageConverter 抽象,以在Java对象和JMS消息之间进行转换。
org.springframework.jms.support.destination
提供管理 JMS 目标的不同策略,比如针对JNDI中保存的目标的服务定位器。
org.springframework.jms.connection
提供适合在独立应用程序中使用的ConnectionFactory实现。connection还包含针对JMS的Spring PlatformTransactionManager实现。它允许把JMS作为事务性资源集成到Spring的事务管理机制中。
IBM WebSphere MQ
就像前面提到的,示例应用程序会用Spring的JMS框架通过JMS接口与IBM的WebSphere MQ集成。通过在应用程序和Web服务之间传递消息,WebSphere MQ提供了可靠的、有恢复能力的应用程序集成。它使用队列和事务性工具帮助保持消息跨网络的完整性。WebSphere MQ降低了信息丢失的风险和调和通信IT系统的需要。
WebSphere MQ在它所支持的所有平台上提供了一致的应用程序编程接口,这有助于让集成的程序可移植。除了标准接口外,WebSphere MQ 还完整实现了JMS接口,包括对发布-订阅消息传递的支持。WebSphere MQ EXPlorer工具可以远程地管理和配置整个MQ网络。管理和配置工具基于开放源码的Eclipse框架,而且是可扩展的。
Spring JMS模板
Spring框架提供了JmsTemplate的两个实现。JmsTemplate类使用JMS 1.1 API子类JmsTemplate102则使用JMS API我的示例应用程序使用的是 JmsTemplate102。
JMS模板被用来发送和接收JMS消息。Spring采用回调机制对JMS信息传递进行协调。MessageCreator回调接口用JmsTemplate中的调用代码提供的Session创建消息。为了支持JMS API更复杂的应用,回调SessionCallback向用户提供了JMS会话而callback ProdUCerCallback则公开了Session和MessageProducer组合。
【编辑推荐】