1、什么是JMS
JMS指的是Java message service,是JEE技术开发规范的一个重要组成部分,它是一种企业消息处理的规范。它是解耦的,实现了消息生产者和消费者的隔离。
2、JMS的组成架构
JMS服务器:服务器系统,一般商业应用服务器都可提供JMS服务器支持。
JMS生产者:负责创建并发送消息的程序组件。
JMS消费者:负责读取处理消息的程序组件。
3、主要JMS 消息机制模型:PTP和Pub-Sub
点对点(PTP)模型:每一个消息传递给一个消费者,消息不会同时被多个消费者接收。如果消费者不在线,消息自动持久化(保存到数据库或文件),以保证消息不会丢失。
发布/订阅(Pub-Sub)模型:每个消息发送到一个消息主题,该主题可以拥有多个订阅者,JMS系统负责将主题的副本分发给所有订阅者。 (观察者模式?)
4、JMS version1.0.2两种模型的对象API
PTP Pub-Sub
连接工厂: QueueConnectionFactory TopicConnectionFactory
JMS连接: QueueConnection TopicConnection
消息会话: QueueSession TopicSession
消息目的: Queue Topic
消息生产者: QueueSender TopicPublisher
消息消费者: QueueReceiver TopicSubscriber
发送消息的方法:send(Message msg) publsh(Message msg)
接收消息的方法:receive()/receiveNoWait() receive()/receiveNoWait()
5、JMS version1.1统一域模型API(适用于PTP和Pub-Sub)
连接工厂:ConnectionFactory
连接:Connection
消息会话:Session
消息目的:Destination
消息生产者:MessageProducer
消息消费者:MessageConsumer
6、JMS1.1消除了PTP、Pub-Sub的消息发送和接收步骤:
消息发送步骤:
(1)通过JNDI(Java Naming and Directory Interface,Java命名和目录接口)查找来获取JMS连接工厂
(2)JMS连接工厂创建JMS连接
(5)JMS消息会话创建空的JMS消息
(6)JMS消息调用自身的方法填充内容
(7)通过JNDI查找获取JMS消息目的
(8)消息生产者将消息发送到指定的JMS消息目的
(9)关闭JMS资源
消息同步接收步骤:
(1)通过JNDI查找来获取JMS连接工厂
(2)JMS连接工厂创建JMS连接
(5)JMS会话指定特定的JMS消息目的来创建一个JMS消息消费者
(6)JMS消费者接收消息
(7)关闭JMS资源
注:异步接收使用消息监听器MessageListener。
7、其他
JMS指的是Java message service,是JEE技术开发规范的一个重要组成部分,它是一种企业消息处理的规范。它是解耦的,实现了消息生产者和消费者的隔离。
2、JMS的组成架构
JMS服务器:服务器系统,一般商业应用服务器都可提供JMS服务器支持。
JMS生产者:负责创建并发送消息的程序组件。
JMS消费者:负责读取处理消息的程序组件。
3、主要JMS 消息机制模型:PTP和Pub-Sub
点对点(PTP)模型:每一个消息传递给一个消费者,消息不会同时被多个消费者接收。如果消费者不在线,消息自动持久化(保存到数据库或文件),以保证消息不会丢失。
发布/订阅(Pub-Sub)模型:每个消息发送到一个消息主题,该主题可以拥有多个订阅者,JMS系统负责将主题的副本分发给所有订阅者。 (观察者模式?)
4、JMS version1.0.2两种模型的对象API
PTP Pub-Sub
连接工厂: QueueConnectionFactory TopicConnectionFactory
JMS连接: QueueConnection TopicConnection
消息会话: QueueSession TopicSession
消息目的: Queue Topic
消息生产者: QueueSender TopicPublisher
消息消费者: QueueReceiver TopicSubscriber
发送消息的方法:send(Message msg) publsh(Message msg)
接收消息的方法:receive()/receiveNoWait() receive()/receiveNoWait()
5、JMS version1.1统一域模型API(适用于PTP和Pub-Sub)
连接工厂:ConnectionFactory
连接:Connection
消息会话:Session
消息目的:Destination
消息生产者:MessageProducer
消息消费者:MessageConsumer
6、JMS1.1消除了PTP、Pub-Sub的消息发送和接收步骤:
消息发送步骤:
(1)通过JNDI(Java Naming and Directory Interface,Java命名和目录接口)查找来获取JMS连接工厂
(2)JMS连接工厂创建JMS连接
(3)JMS连接创建JMS消息会话
--------------------------------------------------------
(4)JMS消息会话创建JMS消息生产者(5)JMS消息会话创建空的JMS消息
(6)JMS消息调用自身的方法填充内容
(7)通过JNDI查找获取JMS消息目的
(8)消息生产者将消息发送到指定的JMS消息目的
(9)关闭JMS资源
消息同步接收步骤:
(1)通过JNDI查找来获取JMS连接工厂
(2)JMS连接工厂创建JMS连接
(3)JMS连接创建JMS消息会话
----------------------------------------------------------
(4)通过JNDI查找获取JMS消息目的(5)JMS会话指定特定的JMS消息目的来创建一个JMS消息消费者
(6)JMS消费者接收消息
(7)关闭JMS资源
注:异步接收使用消息监听器MessageListener。
7、其他
消息的优先级设置、消息类型、消息确认的方式、消息选择器、消息的临时目的、事务性session、JTA全局事务、JMS服务器的异常监听和JMS集群这里不做概述。
转载自:http://boonya.iteye.com/blog/1636706