深入掌握JMS(一):JMS基础
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提供者提供给我们的接口得到了. 0 0 0
分享到:
相关推荐
Spring Boot简化了Java应用的初始化和配置,而gssdgv-zhuan-ke在此基础上增加了特定于蚂蚁集团业务需求的功能,使得开发者能够快速构建高性能、高可用的服务。 2. **Readiness Check** Readiness Check是该框架的...
标题 "zhuan_java_untilgw8_android_" 暗示了这是一个关于使用Java语言在UntilGW8平台上开发Android游戏的项目,特别是一款简单的打砖块游戏。在这个项目中,我们可以深入学习到Java编程语言、Android应用开发的基础...
在这个名为"zhuan 2.zip"的压缩包中,包含了一个支持移动端的转盘抽奖程序。这个程序的核心是通过JavaScript实现,使得用户可以通过点击来触发抽奖过程,从而增加用户体验的趣味性和参与度。 首先,我们来看“转盘...
电子技术基础教学完美版电子技术基础教学完美版电子技术基础教学完美版电子技术基础教学完美版电子技术基础教学完美版
在IT行业中,转换不同格式的文件是一项常见的任务,特别是在嵌入式系统开发或者软件工程领域。...理解和掌握这种转换技巧对于IT专业人士,尤其是从事嵌入式系统开发的工程师来说,是必备的技能之一。
标题中的"Map_out.rar"可能是指一个RAR压缩文件,它包含了一个名为"Map_out"的文件或目录。"Map o_mapgis_mapgis noteo_mapgis zhuan jpg_out"这部分可能是描述了这个压缩包的主要功能或者过程,即MapGIS的二次开发...
在给定的“ban-zhuan.zip_JAVA穷举法搬砖”主题中,我们面对的是一个数学问题,该问题与实际的砖块分配有关。36块砖需要36个人来搬运,其中包括男性、女性和小孩,他们各自有不同的搬运能力。男性每次能搬4块砖,...
例如,"h píng huà duǒ yī hòu zhú yì yǔ wèn yù dàn fāng lián máng gēng jiào tóng yì guāng míng zhuan xīn"等词语的拼写和书写,需要学生熟练掌握声母、韵母和声调。 二、选字填空:这题...
1. **编程语言**:开发者通常需要掌握至少一种或多种编程语言,如Java、Python、C++、JavaScript等,它们各有特性和用途,例如Java适合企业级应用,Python适合数据分析,C++适合高性能计算,JavaScript则用于前端...
自媒体新媒体软件工具自媒体zhuan钱秘诀资料
"XUAN-ZHUAN-led.zip_旋转LED_旋转LED 自适应_自适应旋转LED"这个压缩包文件内容是关于实现旋转LED自适应转速的程序,其核心目标是让LED屏幕上的字幕能够流畅地滚动,并根据设备的转速自动调整滚动速度,以保持最佳...
在给定的“zhuan-su-eliang.rar”压缩包中,包含了一个名为“zhuan su eliang.vi”的虚拟仪器(VI),这显然是一款用于转速测量的应用程序。 转速测量是机械工程、汽车工业、电力系统等领域中常见的技术需求。...
#### 一、2.6.14 内核移植步骤 **1. 清除中间文件** - **背景**: 如果您使用的是其他人移植好的内核版本,则在开始编译之前应该清除中间文件。这是为了避免因使用的交叉编译工具不同而导致的问题。 - **命令**: -...
总之,SOHO网络赚钱涉及到的不仅仅是技术层面的操作,更是一种综合性的自我创业和市场营销能力的体现。通过不断学习和实践,个体能够在网络世界中找到属于自己的赚钱方式,并在此过程中不断提升自我,实现财务自由和...
概念模型是 PowerDesigner 中的一个逻辑模型,它是根据业务需求和规则设计的,用于描述实体、属性和关系之间的关系。在将概念模型转换成物理模型前,需要对模型进行 normalize 和 denormalize 处理,以确保模型的...
在理解这个程序之前,我们需要掌握C语言的一些基础知识,包括但不限于: - **头文件的包含**:如`#include<dos.h>`、`#include<stdio.h>`等,这些头文件包含了必要的函数和宏定义。 - **变量声明与初始化**:例如`...
#### 一、PDF与Word文档的基本概念 - **PDF文档**:便携式文档格式(Portable Document Format),是一种用于呈现和交换文档的可靠格式,无论这些文档是在哪个应用程序或平台上创建的。PDF文档能够忠实还原原始文档...
PDF转TXT格式是一种常见的文档转换需求,特别是在处理大量文本数据时。这个名为“pdfzhuantxt.rar”的压缩包提供了一个小程序,能够帮助用户将PDF文件转换为纯文本(TXT)格式。PDF(Portable Document Format)是...
标题中的“一款新闻软件”指的是一个基于Android平台的应用程序,主要功能是提供新闻浏览、用户管理以及相关操作。描述中提到的功能包括用户登录系统、用户注册、密码修改、用户查询、搜索功能(如“百度一下”)...
例如,"左转"的匹配代码是`A5 07 07 5B:zuo zhuan:p14=1:01`,而"右转"的匹配代码是`A5 08 08 5B:you zhuan:p14=0:01`。这些代码将被下载到语音识别模块中。 3. **串口通信**:语音识别模块设置为串口输出...