【图解RabbitMQ-2】图解JMS规范与AMQP协议是什么

简介: 【图解RabbitMQ-2】图解JMS规范与AMQP协议是什么

🌟前言


在上一节中学习了消息队列是什么?以及消息队列的应用场景有哪些?那么实现消息队列的方式有哪些呢?那么本篇文章将对JMS规范、AMQP协议两大消息队列实现方式进行简单介绍。


🌟JMS规范


JMS是什么?


以下解释来源于百度百科:


JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。JMS是一种与厂商无关的 API,用来访问收发系统消息,它类似于JDBC(Java Database Connectivity)。


个人理解:


JMS是Java平台面向消息中间件的API规范,用来收发消息,类似于JDBC。


图解:

e0b603b19389a0e9d5277f4ca5073b60_c042b5a25a7b41c997cbdd04a7461656.png


核心组件

  1. 提供者:实现JMS规范的消息中间件或者JMS接口的实现。
  2. 生产者:消息的发送者。
  3. 消费者:消息的接收者。
  4. 消息:数据对象。
  5. 队列:存储待消费消息的区域。
  6. 主题:支持将消息发送给多个订阅者。

两种模型

点对点模型:


  • 组成:由生产者、消息、消息队列、消费者组成。
  • 特点:生产者发送到特定的队列,消费者消费特定队列的一条消息。

c89e575720016ff2dbe57b55a1835f4c_2b09d85986b74883bb43a81114584d70.png

发布订阅模型:

  • 组成:由发布者、订阅者、主题组成。
  • 特点:发布者发布主题给订阅者。一条消息可以发给多个订阅者。类似于公众号订阅。

7342f97a062bf63be7462c7d76a82ba3_fde1f5f3539d483facb59028e37d97aa.png


🌟AMQP协议


AMQP是什么?


以下解释来源于百度百科:


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


个人理解:


一种提供统一消息服务的消息队列协议,一种标准。


图解:

b7437b86c4e54b732f5561cb6fecc785_4b16812a1cbb4be990de179f243dfec6.png


核心组件


  1. Broker(代理器):代理器是AMQP协议的核心组件之一,负责接收、路由和传递消息。代理器代表一个消息中间件节点。
  2. Exchange(交换机):交换机是消息的路由中心,用于接收生产者发送的消息并将其路由到一个或多个队列。交换机根据预定义的路由规则,将消息路由到特定的队列或者其他交换机。
  3. Queue(队列):队列是消息的存储和转发载体。消费者从队列中接收消息,并进行处理。消息在队列中按照先进先出的顺序进行存储和转发。
  4. Binding(绑定):绑定是交换机和队列之间的关联关系。通过绑定,将交换机和队列关联起来,并定义特定的路由规则,以确定消息该被发送到哪个队列。
  5. Message(消息):消息是AMQP中的基本单位,包含要传递的数据和相关的元数据。消息由生产者发送给交换机,并最终路由到队列,然后由消费者进行消费。
  6. Channel(通道):通道是在客户端和代理器之间建立的虚拟连接。通过通道,可以在客户端和代理器之间进行可靠的消息传递和操作。


对于AMQP协议先介绍这些,因RabbitMQ基于AMQP协议实现,将会借着RabbitMQ学习AMQP协议更多内容。

🌟写在最后


有关于图解JMS规范与AMQP协议是什么到此就结束了。感谢大家的阅读,希望大家在评论区对此部分内容散发讨论,便于学到更多的知识。


相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
消息中间件 Java
Java一分钟之-RabbitMQ:AMQP协议实现
【6月更文挑战第11天】RabbitMQ是基于AMQP协议的开源消息队列服务,支持多种消息模式。本文介绍了RabbitMQ的核心概念:生产者、消费者、交换器、队列和绑定,以及常见问题和解决方案。例如,通过设置消息持久化和确认机制防止消息丢失,配置死信队列处理不可消费消息,以及妥善管理资源防止泄漏。还提供了Java代码示例,帮助读者理解和使用RabbitMQ。通过理解这些基础和最佳实践,可以提升RabbitMQ在分布式系统中的可靠性和效率。
419 0
Java一分钟之-RabbitMQ:AMQP协议实现
|
Web App开发 消息中间件 Java
轻松搞定RabbitMQ开篇:Java消息队列与JMS的诞生
Java 帝国之消息队列 原创: 刘欣 码农翻身 2017-02-06 张家村的历史 Java 帝国的张家村正在迎来一次重大的变革。
|
消息中间件 网络协议
轻松搞定RabbitMQ1:RabbitMQ与AMQP协议简介
RabbitMQ与AMQP协议详解 1. 消息队列的历史 了解一件事情的来龙去脉,将不会对它感到神秘。让我们来看看消息队列(Message Queue)这项技术的发展历史。
|
10月前
|
消息中间件 数据管理 Serverless
阿里云消息队列 Apache RocketMQ 创新论文入选顶会 ACM FSE 2025
阿里云消息团队基于 Apache RocketMQ 构建 Serverless 消息系统,适配多种主流消息协议(如 RabbitMQ、MQTT 和 Kafka),成功解决了传统中间件在可伸缩性、成本及元数据管理等方面的难题,并据此实现 ApsaraMQ 全系列产品 Serverless 化,助力企业提效降本。
|
8月前
|
消息中间件 Java Kafka
消息队列比较:Spring 微服务中的 Kafka 与 RabbitMQ
本文深入解析了 Kafka 和 RabbitMQ 两大主流消息队列在 Spring 微服务中的应用与对比。内容涵盖消息队列的基本原理、Kafka 与 RabbitMQ 的核心概念、各自优势及典型用例,并结合 Spring 生态的集成方式,帮助开发者根据实际需求选择合适的消息中间件,提升系统解耦、可扩展性与可靠性。
605 1
消息队列比较:Spring 微服务中的 Kafka 与 RabbitMQ
|
消息中间件 JSON Java
开发者如何使用轻量消息队列MNS
【10月更文挑战第19天】开发者如何使用轻量消息队列MNS
1073 98
|
消息中间件 安全 Java
云消息队列RabbitMQ实践解决方案评测
一文带你详细了解云消息队列RabbitMQ实践的解决方案优与劣
539 114
|
消息中间件 存储 Kafka
MQ 消息队列核心原理,12 条最全面总结!
本文总结了消息队列的12个核心原理,涵盖消息顺序性、ACK机制、持久化及高可用性等内容。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
|
消息中间件 运维 监控
云消息队列RabbitMQ实践解决方案评测报告
本报告旨在对《云消息队列RabbitMQ实践》解决方案进行综合评测。通过对该方案的原理理解、部署体验、设计验证以及实际应用价值等方面进行全面分析,为用户提供详尽的反馈与建议。
382 16
|
消息中间件
解决方案 | 云消息队列RabbitMQ实践获奖名单公布!
云消息队列RabbitMQ实践获奖名单公布!
292 1