J2EE规范系列之 JMS1.1 (一) 基本概念

原创
2015/07/06 15:06
阅读数 1.8K



什么是JMS

JMS(Java Message Service) 即Java消息服务。它提供标准的产生、发送、接收消息的接口简化企业 应用的开发。它是J2EE规范的一部分,定义的接口标准,针对不同的厂商有不同的实现库。


JMS原型

JMS的原型是以MOM为基准, 进行组件的。 程序A 是消息生产者, 将消息发送到 MOM 服务器。程序B是消息消费者,负责从MOM服务器(队列服务器)那里接收消息。

http://img.ddvip.com/2012/1220/201212200121548413.png

其中JMS 有两种消息通信模型:点到点(point-to-point)(P2P)模型和发布/订阅(Pub/Sub)模型.

P2P 模型规定了一个消息只能有一个接收者;

    对于点到点模型,消息生产者产生一个消息后,把这个消息发送到一个Queue(队列)中,然后消息接收者再从这个Queue中读取,一旦这个消息被一个接收者读取之后,它就在这个Queue中消失了,所以一个消息只能被一个接收者消费。

http://img.ddvip.com/2012/1220/201212200121555483.jpg

Pub/Sub 模型允许一个消息可以有多个接收者。
  
    与点到点模型不同,发布/订阅模型中,消息生产者产生一个消息后,把这个消息发送到一个Topic中,这个Topic可以同时有多个接收者在监听,当一个消息到达这个Topic之后,所有消息接收者都会收到这个消息。

http://img.ddvip.com/2012/1220/201212200121557330.gif


简单的讲,点到点模型和发布/订阅模型的区别就是前者是一对一,后者是一对多。

JMS 应用

JMS 应用程序由一下几部分组成:

  • JMS客户端:发送和接收消息的java程序语言

  • JMS提供商:基于JMS规范的实现库,如JBOSS的 HornetQ ,apache的activeMQ等

  • JMS消息:实体对象,它是一个序列化对象,将传递的消息内容实例化成一个对象,在客户端和服务器之间传递。

  • JMS托管对象:托管对象是一些预配置类,如 ConnectionFactory,这些类通常是一些重类,只需被实例化一次或者使用池化技术来管理。在实际应用中,通常都是交给容器管理,客户端通过JNDI来取得相应的对象。 再测试阶段,基于环境限制,可以自行实例化对象(产品环境中 不介意这么做)

JMS 接口规范

JMS 基于一系列通用的消息概念。每个JMS 消息域—PTP 和Pub/Sub—也为这些概念定义了各自的接口集。JMS 通用接口提供了一个独立于PTP 和Pub/Sub 消息域的域视图。鼓励JMS 客户端程序员使用这些接口来创建他们的客户端程序。


  • ConnectionFactory——客户端使用这个被管理对象来创建一个Connection。

  • Connection——一个到JMS 提高商的活动连接。

  • Destination——封装了消息目的地标识的被管理对象。

  • Session——一个用于发送和接收消息的单线程上下文。

  • MessageProducer——一个由Session 创建用于往目的地发送消息的对象。

  • MessageConsumer——一个由Session 创建用于接收发送到目的地的消息的对象。

展开阅读全文
打赏
3
2 收藏
分享
加载中
更多评论
打赏
0 评论
2 收藏
3
分享
返回顶部
顶部