1、JMS(Java Message Service)Java消息服务,是Java20几种技术其中之一
2、JMS规范定义了Java中访问消息中间件的接口,但是没有给实现,这个实现就是由第三方使用者来开发实现,我们称为JMS provider,例如AMQ
3、实现了JMS接口和规范的消息中间件我们称为:JMS提供者(JMS Provider)
4、JMS Message 由三部分组成
消息头,每个消息对应的get set方法
消息属性,
消息体,具体业务数据
JMS producer ,消息生产者,创建并且发送JMS消息
JMS Consumer,消息消费者,接收并处理JMS消息
消息的消费可以采用两种方式,
1、同步,通过调用消息的receive方法阻塞到消息到达(一般不使用这种方式)
2、异步,客户端注册一个监听器到AMQ定义消息到达时所采取的动作
消息传递域的概念
JMS定义了两种消息传递域,点对点(point-to-point)传递域和发布/订阅传递域(publish/subscribe简写为pub/sub)
PTP点对点消息传递域的特点
1、一个消息只能有一个消息者
2、消息的生产者和消费者之间没有任何时间的相关性,无论消费者在生产者发送消息的时候是否处于运行状态它都可以提取消息
pub/sub订阅消息传递域的特点:
1、每个消息可以有多个消费者
2、生产者和消费者之间有时间上的关联性,在非持久性订阅状态下,消费者需要在启动状态下才可以收到生产者的消息,持久性订阅,消费者可以接收到它未启动时候的生产者发送的消息但是前提是消费者先订阅这个主题!
JMS常用类的描述
ConnectionFactory,连接工厂,用来创建对象,以连接到JMS的Provider
Connection :封装客户端和JMS之间的一个虚拟链接
Session:生产者和消费者一个单线程上下文,会话
会用用于创建生产者和消费者,和消息,会话提供了事务性的上下文,在这个上下文中,一组发送和接收被组合到一个原子操作中。
Destination:消息发送的目的地
Acknowledge:签收
Transaction:事物
JMS client:用来接收消息的Java应用