由于最近研发项目进展缓慢,故在有限的时间里学习一下JMS,在此做笔记为证。
一、JMS的基本概念
源引,在developerworks看到的一篇文章,来为JMS下个定义:
JMS 是什么?
Java MessageService 规范 1.1 声称:
JMS 是一组接口和相关语义,它定义了 JMS 客户如何访问企业消息产品的功能。
在 JMS 之前,每一家 MOM 厂商都用专有 API 为应用程序提供对其产品的访问,通常可用于许多种语言,其中包括 Java 语言。JMS 通过 MOM 产品为 Java 程序提供了一个发送和接收消息的标准的、便利的方法。用 JMS 编写的程序可以在任何实现 JMS 标准的 MOM 上运行。
JMS 可移植性的关键在于:JMSAPI 是由 Sun 作为一组接口而提供的。提供了 JMS 功能的产品是通过提供一个实现这些接口的提供者来做到这一点的。
开发人员可以通过定义一组消息和一组交换这些消息的客户机应用程序建立 JMS 应用程序。
二、JMS的目标
更好地理解 JMS 有助于了解 JMS 规范的制定者设置的目标。
现在,市场上有许多企业消息产品,生产这些产品的几家公司也参与了 JMS 的开发。
现有的这些系统的能力和功能各不相同。这些制定者知道如果 JMS 结合所有现有系统的所有功能,那么它会变得过于复杂。同样,他们相信,他们也不能让 JMS 只局限于所有系统共有的那些特性。
制定者相信,让 JMS 包括实现“高级的企业应用程序”所需要的所有功能是很重要的。
JMS 规范中声明, JMS 的目标是:
- 定义一组消息公用概念和实用工具。
- 最少化程序员使用消息时必须学习的概念。
- 最大化消息应用程序的可移植性。
- 最小化实现一个提供者所需的工作量。
- 为点对点和 pub/sub 域 提供客户机接口。“域”是用于在前面讨论的消息模型的 JMS 术语。(注意:提供者不需要实现两个域。)
三、JMS 1.1规范
在 JMS 1.1 以前的版本中,每一个域都有自己的特定于该域的一组客户机接口。JMS 版本 1.1 提供了单一的一组接口,它允许客户机可以在两个域中发送和接收消息。这些“域无关的接口”保留了每一个域的语义和行为,是实现 JMS 客户机的最好选择。支持特定于域的接口是为了向后兼容性,新的开发不该使用它。
统一域的好处是:
- 它展示了用于客户机编程的更简单的编程模型。
- 队列和主题的操作可以是同一事务的一部分。
- 它为 JMS 提供者提供了优化其实现的机会。
源文档 <http://www.ibm.com/developerworks/cn/education/java/j-jms/section2.html> ,如果有版权涉及,请通知,我会及早进行删除
在这一节里,我对于JMS的基本概念,做了一下解释。方便以后,自己进行理解。