JMS 和 AMQP

简介: JMS 和 AMQP简介

JMS 是什么?

JMS(JAVA Message Service,java 消息服务)是 Java 的消息服务,JMS 的客户端之间可以通过 JMS 服务进行异步的消息传输。JMS(JAVA Message Service,Java 消息服务)API 是一个消息服务的标准或者说是规范,允许应用程序组件基于 JavaEE 平台创建、发送、接收和读取消息。它使分布式通信耦合度更低,消息服务更加可靠以及异步性。

JMS 定义了五种不同的消息正文格式以及调用的消息类型,允许你发送并接收以一些不同形式的数据:

  • StreamMessage:Java 原始值的数据流
  • MapMessage:一套名称-值对
  • TextMessage:一个字符串对象
  • ObjectMessage:一个序列化的 Java 对象
  • BytesMessage:一个字节的数据流

ActiveMQ(已被淘汰) 就是基于 JMS 规范实现的。

# JMS 两种消息模型

# 点到点(P2P)模型

网络异常,图片无法展示
|
队列模型

使用队列(Queue)作为消息通信载体;满足生产者与消费者模式,一条消息只能被一个消费者使用,未被消费的消息在队列中保留直到被消费或超时。比如:我们生产者发送 100 条消息的话,两个消费者来消费一般情况下两个消费者会按照消息发送的顺序各自消费一半(也就是你一个我一个的消费。)

# 发布/订阅(Pub/Sub)模型

网络异常,图片无法展示
|
发布/订阅(Pub/Sub)模型

发布订阅模型(Pub/Sub) 使用主题(Topic)作为消息通信载体,类似于广播模式;发布者发布一条消息,该消息通过主题传递给所有的订阅者,在一条消息广播之后才订阅的用户则是收不到该条消息的

# AMQP 是什么?

AMQP,即 Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准 高级消息队列协议(二进制应用层协议),是应用层协议的一个开放标准,为面向消息的中间件设计,兼容 JMS。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件同产品,不同的开发语言等条件的限制。

RabbitMQ 就是基于 AMQP 协议实现的。

# JMS vs AMQP

对比方向 JMS AMQP
定义 Java API 协议
跨语言
跨平台
支持消息类型 提供两种消息模型:①Peer-2-Peer;②Pub/sub 提供了五种消息模型:①direct exchange;②fanout exchange;③topic change;④headers exchange;⑤system exchange。本质来讲,后四种和 JMS 的 pub/sub 模型没有太大差别,仅是在路由机制上做了更详细的划分;
支持消息类型 支持多种消息类型 ,我们在上面提到过 byte[](二进制)


相关实践学习
通过轻量消息队列(原MNS)主题HTTP订阅+ARMS实现自定义数据多渠道告警
本场景将自定义告警信息同时分发至多个通知渠道的需求,例如短信、电子邮件及钉钉群组等。通过采用轻量消息队列(原 MNS)的主题模型的HTTP订阅方式,并结合应用实时监控服务提供的自定义集成能力,使得您能够以简便的配置方式实现上述多渠道同步通知的功能。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
4月前
|
人工智能 监控 调度
AI Agent 指挥官 vs AI 调度官:谁才是智能体系统的“大脑”?
随着AI迈向多智能体协同,系统分化出两大核心角色:**AI调度官**(专注任务分配与高效执行)与**AI Agent指挥官**(负责目标对齐、结构编排与系统治理)。二者分层协作,构建类操作系统的“智能中枢”,提升稳定性、可解释性与跨行业扩展能力,标志着AI从单点智能走向可持续组织化协同。
325 1
|
7月前
|
监控 ice
如何用简单步骤实现合约量化策略盈利
成果定义、MVP拆解、分步执行模板、异常应对、量化迭代与规模化交付六步法,系统化推进量化策略从实验到生产落地,确保可控、可复现、可扩展。
|
11月前
|
人工智能 运维 数据可视化
什么是低代码?2025低代码开发平台发展现状及标准化研究
低代码是一种通过可视化、组件化方式开发应用的技术,可降低开发门槛、提升效率。它能减少沟通成本、打破业务壁垒、提高产品灵活性并加速企业数字化转型。目前,低代码市场正以年复合增长率35%的速度扩张,但面临标准化、性能和技术债务等挑战。未来三年内,随着AI辅助开发和国家标准的推进,低代码将迎来质变临界点,成为企业数字化的核心驱动力。
|
消息中间件 存储 Java
详解AMQP协议
详解AMQP协议
1811 0
|
负载均衡 算法
架构学习:7种负载均衡算法策略
四层负载均衡包括数据链路层、网络层和应用层负载均衡。数据链路层通过修改MAC地址转发帧;网络层通过改变IP地址实现数据包转发;应用层有多种策略,如轮循、权重轮循、随机、权重随机、一致性哈希、响应速度和最少连接数均衡,确保请求合理分配到服务器,提升性能与稳定性。
2996 11
架构学习:7种负载均衡算法策略
|
存储 人工智能 监控
2025 年可观测 10 大趋势预测
2025 年可观测 10 大趋势预测
801 0
|
消息中间件 NoSQL 关系型数据库
【Kubernetes部署Shardingsphere、Mycat、Mysql、Redis、中间件Rocketmq、Rabbitmq、Nacos】
【Kubernetes部署Shardingsphere、Mycat、Mysql、Redis、中间件Rocketmq、Rabbitmq、Nacos】
650 0
|
消息中间件 存储 监控
消息队列原理和选型:Kafka、RocketMQ 、RabbitMQ 和 ActiveMQ
常用的消息队列主要这 4 种,分别为 Kafka、RabbitMQ、RocketMQ 和 ActiveMQ,主要介绍前三,不BB,上思维导图!
4395 0
消息队列原理和选型:Kafka、RocketMQ 、RabbitMQ 和 ActiveMQ
|
Java Linux API
单调时钟与墙上时钟的区别?ntp如何优雅校时?
单调时钟与墙上时钟的区别?ntp如何优雅校时?
736 0
单调时钟与墙上时钟的区别?ntp如何优雅校时?
|
自然语言处理 Python
【Python自然语言处理】计算文本相似度实例(使用difflib,fuzz,余弦三种计算方式 附源码)
【Python自然语言处理】计算文本相似度实例(使用difflib,fuzz,余弦三种计算方式 附源码)
1285 0

热门文章

最新文章