深入掌握JMS(一):JSM基础
1. JMS基本概念 JMS(Java Message Service) 即Java消息服务。它提供标准的产生、发送、接收消息的接口简化企业应用的开发。它支持两种消息通信模型:点到点(point-to-point)(P2P)模型和发布/订阅(Pub/Sub)模型。P2P 模型规定了一个消息只能有一个接收者;Pub/Sub 模型允许一个消息可以有多个接收者。 对于点到点模型,消息生产者产生一个消息后,把这个消息发送到一个Queue(队列)中,然后消息接收者再从这个Queue中读取,一旦这个消息被一个接收者读取之后,它就在这个Queue中消失了,所以一个消息只能被一个接收者消费。 与点到点模型不同,发布/订阅模型中,消息生产者产生一个消息后,把这个消息发送到一个Topic中,这个Topic可以同时有多个接收者在监听,当一个消息到达这个Topic之后,所有消息接收者都会收到这个消息。
简单的讲,点到点模型和发布/订阅模型的区别就是前者是一对一,后者是一对多。 |
2. 几个重要概念 Destination:消息发送的目的地,也就是前面说的Queue和Topic。创建好一个消息之后,只需要把这个消息发送到目的地,消息的发送者就可以继续做自己的事情,而不用等待消息被处理完成。至于这个消息什么时候,会被哪个消费者消费,完全取决于消息的接受者。 Message:从字面上就可以看出是被发送的消息。它有下面几种类型: StreamMessage:Java 数据流消息,用标准流操作来顺序的填充和读取。 MapMessage:一个Map类型的消息;名称为 string 类型,而值为 Java 的基本类型。 TextMessage:普通字符串消息,包含一个String。 ObjectMessage:对象消息,包含一个可序列化的Java 对象 BytesMessage:二进制数组消息,包含一个byte[]。 XMLMessage: 一个XML类型的消息。 最常用的是TextMessage和ObjectMessage。 Session:与JMS提供者所建立的会话,通过Session我们才可以创建一个Message。 Connection:与JMS提供者建立的一个连接。可以从这个连接创建一个会话,即Session。 ConnectionFactory: 那如何创建一个Connection呢?这就需要下面讲到的ConnectionFactory了。通过这个工厂类就可以得到一个与JMS提供者的连接,即Conection。 Producer:消息的生产者,要发送一个消息,必须通过这个生产者来发送。 MessageConsumer:与生产者相对应,这是消息的消费者或接收者,通过它来接收一个消息。 前面多次提到JMS提供者,因为JMS给我们提供的只是一系列接口,当我们使用一个JMS的时候,还是需要一个第三方的提供者,它的作用就是真正管理这些Connection,Session,Topic和Queue等。
通过下面这个简图可以看出上面这些概念的关系。
ConnectionFactory---->Connection--->Session--->Message Destination + Session------------------------------------>Producer Destination + Session------------------------------------>MessageConsumer 那么可能有人会问: ConnectionFactory和Destination 从哪儿得到? 这就和JMS提供者有关了. 如果在一个JavaEE环境中, 可以通过JNDI查找得到, 如果在一个非JavaEE环境中, 那只能通过JMS提供者提供给我们的接口得到了.
转载于:https://www.cnblogs.com/hilnx/p/3470175.html
深入掌握JMS(一):JSM基础相关推荐
- Java 深入掌握JMS:JSM基础
JMS基本概念 JMS(Java Message Service) 即Java消息服务.它提供标准的产生.发送.接收消息的接口简化企业应用的开发.它支持两种消息通信模型:点到点(point-to-po ...
- 深入掌握JMS JMSCorrelationID与Selector
http://wangh8080.blog.163.com/blog/static/197848297201241843917244/ 深入掌握JMS(一):JSM基础 2012-05-18 16:3 ...
- JAVA消息(第一篇)JMS 很重要!!!!包教包会!!不闹!!!下一篇-AMQP(wire-level protocol)
如果看完:进入第二篇AMQP 首先大致讲一下,java 消息模块 消息,个人理解分为两种:1.同步消息(RPC调用) 2.异步消息(本篇讲解部分) 一.同步消息java提供了多种方案: 最新比较常用的 ...
- 深入掌握JMS--转
深入掌握JMS(一):JSM基础 1. JMS基本概念 JMS(Java Message Service) 即Java消息服务.它提供标准的产生.发送.接收消息的接口简化企业 应用的开发.它 ...
- 大学学了java可以做点什么_学习Java的,大学毕业一般从事些什么工作?
展开全部 我这是拷贝的,62616964757a686964616fe59b9ee7ad9431333332643361不过也就差不多了,说实话,java的东西太多了.还是要到工作的时候慢慢用的,学好 ...
- java连接ibm mq
http://blog.csdn.net/liaomin416100569/article/details/7254191 首先 打开 IBM websphere MQ 管理器 添加一个队列管理器 名 ...
- Web应用系统中数据传递的方式汇总
本文转载自sina_blog(siangzhang) 目录 1 Socket方式 2 ftp/文件共享服务器方式 3 数据库共享数据方式 4 message方式 5 案例 随着近年来SOA(面向服 ...
- java自学路线图_JAVA自学路线图
首先要学JavaSE,与此同时,和JavaSE的学习同步,建议大家研究一下数据结构与算法. 在这儿之后,你可以选择向J2ME.或者Java GUI.Socket编程等方向努力,但是通过第一篇的办法,你 ...
- Spring 系列: Spring 框架
第一部分:Spring 框架简介 Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序 ...
最新文章
- 想知道什么是“成员变量”吗?
- 在Objective-C中创建一个抽象类
- JSON数据从MongoDB迁移到MaxCompute最佳实践
- linux fedora35 buff/cache 占用过高解决方法(适用于大部分linux)
- classpass 配置mysql_jmeter压测学习18-JDBC配置连接mysql数据库
- Linux 终端下 dstat 监控工具
- 【进阶3-5期】深度解析 new 原理及模拟实现
- linux先安装svn server
- Android跑马灯的效果
- View事件分发相关结论的源码解析
- 传输层协议TCP—滑动窗口(6)
- vimdiff 命令使用介绍
- 工业互联网的数据集成
- 云服务器虚拟手机版,云服务器虚拟手机
- 多线程-day-09CAS原理
- 上海JAVA5月就业环境,各位上海的大佬们呀 我准备下个礼拜出去上海找工作了!一年半的...
- 火星转债上市价格预测
- 抖音小店还能做吗?如何解决拍单问题?
- Linux —— 时间问题(GMT,UTC,DST,CST,CET表示什么、UTC与CST之间的转换)
- 基于matlab指纹识别论文,毕业论文-基于Matlab的指纹识别