最近因项目需要,自己下载了JMS Specification 1.1看了下,记录下自己的理解:

  1. JMS提供了一种利用Java程序创建、发送、接收、读取企业消息系统中的消息的一种方式,简单说这种方式就是JMS提供了一套标准API供Java程序调用
  2. JMS供应者(JMS Provider)就是企业消息系统的一个JMS的具体实现,而JMS的意义恰恰是将这种具体实现抽象出来,形成一套标准接口,从而为需要消息功能的Java程序提供了可移植性(portability)。
  3. 一个JMS应用程序由以下几个部分组成:JMS客户端、非JMS客户端、消息、JMS供应者、管理对象。非JMS客户端指那些使用某个消息系统原生(native)API从而依赖于该具体消息系统的客户端(代码)。管理对象则指预配置的JMS对象,它们通常是与具体消息系统相关的,通过JNDI的方式发布,从而使得JMS客户端代码与具体消息系统解耦,而只是依赖一个JNDI发布的资源。
  4.  
  5. JMS架构图

  6. JMS支持两种风格的消息(风格(style), 消息域(message domain), 消息模型(message domain)),点对点的和发布/订阅者模型。
  7. JMS消息由以下部分构成:头部(Header),属性(Properties),消息体(body)。
  8. 消息选择:对于点对点的消息传递,可以将过滤标准直接放在消息中,由接收者在收到消息后进行解析然后丢弃不感兴趣的消息。而对于发布/订阅者模式,则可以通过将过滤标准放在消息头中,因为消息头对于JMS供应者来说是可见的,从而使得JMS客户端能够将消息选择和过滤的工作委托给JMS供应者,从而节省了时间和带宽。
  9. 通常将ConnectionFactory与Destination作为管理对象(Administer Object)通过JNDI发布,作为外部资源提供给JMS客户端
  10. 对于消息消费者(MessageConsumer),可以选择异步/同步模式接收消息。
  11. continue...