🧑💻作者名称:DaenCode
🎤作者简介:CSDN实力新星,后端开发两年经验,曾担任甲方技术代表,业余独自创办智源恩创网络科技工作室。会点点Java相关技术栈、帆软报表、低代码平台快速开发。技术尚浅,闭关学习中······
😎人生感悟:尝尽人生百味,方知世间冷暖。
📖所属专栏:图解RabbitMQ
专栏推荐
- 专门为Redis入门打造的专栏,包含Redis基础知识、基础命令、五大数据类型实战场景、key删除策略、内存淘汰机制、持久化机制、哨兵模式、主从复制、分布式锁等等内容。
链接>>>>>>>>>
《Redis从头学》 - SpringBoot实战相关专栏,包含SpringBoot过滤器、拦截器、AOP实现日志、整合Freemaker、整合Redis等等实战相关内容,多篇文章登入全站热榜、领域热榜、被技术社区收录。
链接>>>>>>
《SpringBoot实战》
文章目录
🌟前言
在上一节中学习了消息队列是什么?以及消息队列的应用场景有哪些?那么实现消息队列的方式有哪些呢?那么本篇文章将对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。
图解:
核心组件
- 提供者:实现JMS规范的消息中间件或者JMS接口的实现。
- 生产者:消息的发送者。
- 消费者:消息的接收者。
- 消息:数据对象。
- 队列:存储待消费消息的区域。
- 主题:支持将消息发送给多个订阅者。
两种模型
点对点模型:
- 组成:由生产者、消息、消息队列、消费者组成。
- 特点:生产者发送到特定的队列,消费者消费特定队列的一条消息。发布订阅模型:
- 组成:由发布者、订阅者、主题组成。
- 特点:发布者发布主题给订阅者。一条消息可以发给多个订阅者。类似于公众号订阅。
🌟AMQP协议
AMQP是什么?
以下解释来源于百度百科:
AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计
。基于此协议的客户端与消息中间件可传递消息,
并不受客户端/中间件不同产品,不同的开发语言等条件的限制
。Erlang中的实现有RabbitMQ等。
个人理解:
一种提供统一消息服务的消息队列协议,一种标准。
图解:
核心组件
- Broker(代理器):代理器是AMQP协议的核心组件之一,负责接收、路由和传递消息。代理器代表一个
消息中间件节点
。 - Exchange(交换机):交换机是
消息的路由中心
,用于接收生产者发送的消息并将其路由到一个或多个队列。交换机根据预定义的路由规则,将消息路由到特定的队列或者其他交换机。 - Queue(队列):队列是
消息的存储和转发载体
。消费者从队列中接收消息,并进行处理。消息在队列中按照先进先出的顺序进行存储和转发。 - Binding(绑定):
绑定是交换机和队列之间的关联关系
。通过绑定,将交换机和队列关联起来,并定义特定的路由规则,以确定消息该被发送到哪个队列。 - Message(消息):消息是AMQP中的基本单位,包含要
传递的数据和相关的元数据
。消息由生产者发送给交换机,并最终路由到队列,然后由消费者进行消费。 - Channel(通道):通道是
在客户端和代理器之间建立的虚拟连接
。通过通道,可以在客户端和代理器之间进行可靠的消息传递和操作。
对于AMQP协议先介绍这些,因RabbitMQ基于AMQP协议实现,将会借着RabbitMQ学习AMQP协议更多内容。
🌟写在最后
有关于图解JMS规范与AMQP协议是什么到此就结束了。感谢大家的阅读,希望大家在评论区对此部分内容散发讨论,便于学到更多的知识。
版权归原作者 DaenCode 所有, 如有侵权,请联系我们删除。