JMS基本概念和模型
-------------------------------------------------------------------------------------------
JMS是什么
JMS 全称:Java Message Service,Java消息服务,是Java EE中的一个技术。
JMS规范
JMS定义了Java 中访问消息中间件的接口,并没有给予实现,实现JMS接口的消息中间件成为JMS Provider,例如:Active MQ
JMS Provider
实现JMS接口和规范的消息中间件
JMS message
JMS的消息,JMS消息由三部分组成:消息头、消息属性、消息体
消息头包含消息的识别消息和路由消息,消息头包含一些标准的属性如下:
(1)JMSDestination: 消息发送的目的地,主要是指Queue和Topic,由send方法设置.
(2)JMSDeliveryMode:传送模式。有两种:持久模式和非持久模式。一条持久性的消息应该被传输"一次仅仅一次",这就意味着如果JMS提供者出现故障,该消息并不会丢失,它会在服务器恢复之后再次传递。一条非持久的消息最多会传递一次,这意味着服务器出现故障,该消息将永远丢失。由send方法设置
(3)JMSExpiration:消息过期时间,等于Destination的send方法中的timeToLive值加上发送时刻的GMT的时间值。如果timeToLive值等于零,则JMSExpiration被设置为零,表示该消息永不过期。如果发送后,在消息过期时间之后消息还没有被发送到目的地,则该消息被清除。由send方法设置
(4)JMSPriority:消息优先级,从0-9十个级别,0-4是普通消息,5-9是加急消息。JMS不要求JMS Provider严格按照这十个优先级发送消息,但必须保证加急消息要先于普通消息到达,默认是4级。由send方法设置
(5)JMSMessageID:唯一识别每个消息的标识,由JMS Provider产生。由send方法设置
(6)JMSTimestamp:一个JMS Provider在调用send()方法时自动设置,它是消息被发送和消费者实际接收的时间差。由客户端设置
(7)JMSCorrelationID:用来连接到另外一个消息,典型的应用是在回复消息中连接到原消息。在大多数情况下,JMSCorrelationID用于将一条消息标记为对JMSMessageID标示的上一条消息的应答,不过,JMSCorrelationID可以是任何值,不仅仅是JMSMessageID。由客户端设置
(8)JMSType: 消息类型的标识符,由客户端设置
(9)JMSReplyTo: 提供本消息回复消息的目的地址,由客户端设置
(10)JMSRedelivered:如果一个客户端收到一个设置了JMSRedelivered属性的消息,则表示可能客户端曾经在早些时候收到过该消息,但并没有签收(acknowledged)。如果该消息被重新传送,JMSRedelivered=true 否则 JMSRedelivered=flase 。由JMS Provider设置
消息体,JMS API定义了5种消息体格式,也叫消息类型,可以使用不同形式发送接收数据,并可以兼容现有的消息格式。
包括:TextMessage、MapMessage、BytesMessage、StreamMessage、ObjectMessage
消息属性,包含以下三种类型的属性:
1.应用程序设置和添加的数据,比如:message.setStringProperty("userName",userName);
2.JMS定义的属性,使用"JMSX"作为属性名的前缀, connection.getMetaData().getJMSXPropertyNames() 方法返回所有连接支持的JMSX属性的名字。
3.JMS供应商特定的属性
JMS producer
消息生产者,创建和发送JMS消息的客户端应用
JMS consumer
消息消费者,创建和处理JMS消息的客户端应用
JMS domains: 消息传递域
JMS规范中定义了两种消息传递域: 点对点(point-to-point,简写成PTP);消息传递域和发布/订阅消息传递域(publish/subscribe,简写成pub/sub)
1.点对点消息传递域的特点如下:
a.每个消息只能有一个消费者
b.消息的生产者和消费者之间没有时间上的相关性。无论消费者在生产者发送消息的时候是否处于运行状态,它都可以提取消息。
2.发布/订阅消息传递域的特点如下:
a.每个消息可以有多个消费者
b.生产者和消费者之间有时间上的相关性。订阅一个主题的消费者只能消费自它订阅之后发布的消息。JMS规范允许客户创建持久订阅,这在一定程度上放松了时间上的相关性要求。持久订阅允许消费者消费它在未处于激活状态时发送的消息。
3.在点对点消息传递域中,目的地被称为队列(queue);在发布/订阅消息传递域中,目的地被称为主题(topic)
Connection factory: 连接工厂,用来创建连接对象,以连接到JMS的provider
JMS Connection: 封装了客户与JMS提供者之间的一个虚拟的连接
JMS Session: 是生产和消费消息的一个单线程上下文
会话用于创建消息生产者(producer)、消息消费者(consumer)和消息(message)等。会话提供了一个事务性的上下文,在这个上下文中,一组发送和接收被组合到了一个原子操作中。
Destination:消息发送到的目的地
Acknowledge:签收
Transaction:事务
JMS client: 用来收发消息的Java应用
JMS基本概念和模型相关推荐
- 消息协议 AMQP 及MQTT ,STOMP,JMS的概念和基本理解
前言 简单理解 就是需要大家都遵守的 套规 .在计算机领域中,只要涉及不同的计算机之间要共同完成一 事情的时候,就肯定会有协议的存在,就像我们说话用某种语言一样,不 同的计算机之间必 须使用相同的语 ...
- java jms 框架_Apache RocketMQ之JMS基本概念及使用
1.png Apache RocketMQ之JMS基本概念及使用 Apache RocketMQ 系列: 优秀博客: 介绍流程: 8.png RocketMQ 是什么? 是一个队列模型的消息中间件,具 ...
- 短小精悍-机器学习核心概念、模型、基础知识点简明手册-免费分享
该手册只有130页,整理了几乎所有关机机器学习的概念.模型.基础知识点,它将帮助读者快速回顾关于机器学习相关的核心知识点和重要公式.模型.概念.涉及概率模型.处理离散数据的生成模型.高斯模型.贝叶斯模 ...
- 数据挖掘原理与算法_资料 | 数据挖掘:概念、模型、方法和算法(第2版)/ 国外计算机科学经典教材...
下载地址: 以下书籍介绍来自图书商城 内容简介 · · · · · · 随着数据规模和复杂度的持续上升,分析员必须利用更高级的软件工具来执行间接的.自动的智能化数据分析.<数据挖掘:概念.模型. ...
- 《信息安全保障》一1.3 信息系统安全保障概念与模型
本节书摘来自华章出版社<信息安全保障>一书中的第1章,第1.3节,作者 吴世忠 江常青 孙成昊 李华 李静,更多章节内容可以访问云栖社区"华章计算机"公众号查看 1.3 ...
- 《信息安全保障》一1.2 信息安全保障概念与模型
本节书摘来自华章出版社<信息安全保障>一书中的第1章,第1.2节,作者 吴世忠 江常青 孙成昊 李华 李静,更多章节内容可以访问云栖社区"华章计算机"公众号查看 1.2 ...
- 云计算概论 -- 云的基本概念和模型
云计算概论 – 云的基本概念和模型 角色和边界 云特性 云的交互模型 角色和边界 边界分为组织边界和信任边界 组织边界 organizational boundary ,:由一家组织拥有和管理的全部I ...
- 【信息科学技术与创新】情绪智能的扩展分析与总结 情绪概念及其模型 结合神经生物学对情绪智能深度分析 情绪智能对个人发展所能做的贡献及其提高方法
情绪智能的扩展分析与总结 摘要 首先对情绪概念及其模型作再度的深入探究 接着结合情绪会改变我们看待世界和理解他人行为的方式以及神经生物学对情绪智能深度分析 最后总结思考情绪智能在未被充分科学验证的情况 ...
- 深入浅出JMS(一)–JMS基本概念(转载)
摘要:The Java Message Service (JMS) API is a messaging standard that allows application components bas ...
最新文章
- error while loading shared libraries: libopencv_highgui.so.3.2: cannot open shared object file 的解决办法
- boost::mp11::mp_set_difference相关用法的测试程序
- 第十二届蓝桥杯省赛A组试题:左儿子右兄弟Java
- Oracle RAC
- tomcat多域名访问
- 在.NET中excel导出方法汇总(收集)
- 【Spring】Spring注解配置okhttp3
- html离线地图,离线地图三维开发-添加HTML
- NVIDIA英伟达:深度学习服务器搭建指南 | 交流会笔记
- java输入两个整数_Java中从键盘输入多个整数的方法
- mvc图片上传到服务器
- hugging face transformer文本分类运行
- 如何给视频加背景音乐?简单快速上手,制作抖音等小视频必备!
- Linux 媒体框架(Media Framework)一
- win11键盘失灵 windows11键盘失控 键盘没反应
- sparkstreaming的实时黑名单过滤太慢
- openOCD的使用1: 应用openOCD和Jlink仿真器连接Freescale K60系列 MCU
- 无线网能连接上但无法连接服务器是啥原因,腾达无线路由器能连接但是上不了网怎么办...
- 研发质量管理---(1)质量管理总结
- FastApi报错 Invalid args for response field! Hint: check that <built-in function id> 。。。解决方法