🌟前言
在上一节中学习了消息队列是什么?以及消息队列的应用场景有哪些?那么实现消息队列的方式有哪些呢?那么本篇文章将对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协议是什么到此就结束了。感谢大家的阅读,希望大家在评论区对此部分内容散发讨论,便于学到更多的知识。