java消息服务学习笔记-1
来源:互联网 发布:网络团队介绍页面源码 编辑:程序博客网 时间:2024/05/16 16:03
本文是自己在看java消息服务这本书时的一个笔记。
java消息服务即是JMS。何为JMS?JMS是javaEE13种技术规范中的一种。javaEE规范有:JDBC、JNDI、EJB、RMI、XML、JavaMail、Java Servlet、Jave IDL/CORBA、JAF、JMS、JSP、JTA、JTS。
JMS是SUN公司制定的,包名都是以javax.jms开头的一组API,它是消息传送客户端和消息传送系统通信时所需接口和类的一种抽象,具体的消息传送系统由具体的厂商根据协议去实现。市面上比较常用的mq,如ActivceMq就实现了JMS协议。想了解activemq是如何实现jms的相关规范的,可以读activemq的源码。这篇文章主要是学习JMS规范的一个笔记,不涉及具体实现。
首先介绍下JMS的API。JMS支持两种消息传送模型:点对点模型(p2p模型)和发布/订阅模型(pub/sub模型)。关于这两种模型后面再做详细介绍。因为有两种消息传送模型,所以,JMS API分为了3个部分,公共API、点对点API、发布/订阅API。如下表格:
公共API
点对点API
发布/订阅API
ConnectionFactory
QueueConnectionFactory
TopicConnectionFactory
Destination
Queue
Topic
Connection
QueueConnection
TopicConnection
Session
QueueSession
TopicSession
Message
Message
Message
MessageProducer
QueueSender
TopicPublisher
MessageConsumer
QueueReceiver
TopicSubscriber
这三种当中,每一行中的类,作用都是一样的,只不过在不同的模式下,类名称不一样。下面介绍每一个api的作用,以公共api为例来讲,其他两类api都和公共的作用一样。
ConnectionFactory:用来创建消息客户端和消息服务提供者之间的连接。这个对象是由消息服务提供者管理的一个对象,消息服务提供者管理了两个对象,还有一个是Destination对象。
Destination:消息目的地,也是消息服务提供者管理的对象。
Connection:连接,由ConnectionFactory.createConnection()方法获得。
Session:会话,由connection.createSession(boolean,)
Message:要传送的消息对象,由session对象创建
MessageProducer:消息生产者,由session创建
MessageConsumer:消息消费者,由session创建
这些接口中,ConnectionFactory和Destination必须使用JNDI从消息提供者(JMS规范实现厂商,如activeMq)处获得,其他的对象都是通过这两个接口创建出来的。
主要API说完之后,回过头说下点对点和发布/订阅两种传送模式。
点对点模型中的三个概念:发送者(sender):生产消息的客户端称为发送者,接受者(receiver):消费消息的客户端称为接受者,队列:发送者和接受者通过队列来交互数据。
点对点模型的特点:1.发送到队列的消息只会由一个消费者接收消费,即使有多个接收者在监听这个消息也是只会有一个接收者来消费这条消息;2.可以同步或异步发送、接收消息;3.接收者通过拉取(pull)或轮询(polliing)主动向队列获取消息,而不是队列主动向接收者推送消息;4:点对点比发布/订阅耦合性强,因为发送者通常会知道消费者如何使用消息;5:支持负载均衡;6:队列有一个浏览器,可供客户端查看队列中的消息,而发布/订阅模式没有。队列浏览器是队列在某个时刻的一个快照,在浏览消息的过程中,实际的队列中消息有可能新增或者被消费,造成实际队列中的消息和快照的数据不一致。
发布/订阅模型中的三个概念:发布者(publisher):消息生产方;订阅者(subscriber);主题(topic):消息目的地,跟点对点中的队列作用一样。
发布/订阅模型的特点:1:一个发布者发布一条消息A到主题,订阅这个主题的所有订阅者都会收到消息A进行消费;2:主题会将消息主动推送(push)给订阅者;3:去耦能力比点对点强,发布者不需要关心订阅者的存在;4:订阅者分为持久订阅者和非持久订阅者。非持久订阅者收不到不活动期间发布的消息。
本篇完,后面会详细介绍消息的结构,继续点对点和发布/订阅
- java消息服务学习笔记-1
- JMS(java消息服务)学习笔记
- Java消息服务(JMS)学习
- 学习笔记——JMS消息服务
- Java消息服务(JMS)学习小结
- Java消息服务(JMS)学习小结
- Java消息服务(JMS)学习小结
- Java消息服务(JMS)学习小结
- Java消息服务(JMS)学习小结
- Java消息服务(JMS)学习小结
- java开源消息服务(OpenJMS&ActiveMQ)-OpenJMS学习笔记一(介绍)
- java开源消息服务(OpenJMS&ActiveMQ)-OpenJMS学习笔记二(运行)
- java开源消息服务(OpenJMS&ActiveMQ)-OpenJMS学习笔记三(调用示例)
- java开源消息服务(OpenJMS&ActiveMQ)-OpenJMS学习笔记四(配置-连接器)
- rabbitMQ消息服务器学习笔记(java)1
- ROS学习笔记(消息msg和服务srv)
- 分布式服务框架学习笔记5 消息队列
- ROS学习笔记(七):新建一个消息和服务
- display:none;和 visibility: hidden;知多少
- 【codevs 2038】香甜的黄油
- php is_dir()函数在读取中文路径时报错问题
- windows 安装tensorflow
- 表格 删除 排序
- java消息服务学习笔记-1
- angular记事本
- Angular Universal 官网翻译
- String StringBuilder StringBuffer 对比 总结得非常好
- 微擎数据库操作函数
- 代码大全
- 项目引入冲突问题
- 【codevs 2455】繁忙的都市
- redis(7)——事件