【图解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一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
Web App开发 消息中间件 Java
轻松搞定RabbitMQ开篇:Java消息队列与JMS的诞生
Java 帝国之消息队列 原创: 刘欣 码农翻身 2017-02-06 张家村的历史 Java 帝国的张家村正在迎来一次重大的变革。
|
2月前
|
消息中间件 网络协议 JavaScript
MQTT常见问题之微消息队列mqtt支持ipv6失败如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
2月前
|
消息中间件 物联网 Java
MQTT常见问题之微消息队列配置失败如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
2月前
|
消息中间件 存储 监控
RabbitMQ:分布式系统中的高效消息队列
RabbitMQ:分布式系统中的高效消息队列
|
5月前
|
消息中间件 NoSQL 数据库
一文讲透消息队列RocketMQ实现消费幂等
这篇文章,我们聊聊消息队列中非常重要的最佳实践之一:消费幂等。
一文讲透消息队列RocketMQ实现消费幂等
|
2月前
|
消息中间件 Java
springboot整合消息队列——RabbitMQ
springboot整合消息队列——RabbitMQ
76 0
|
4月前
|
消息中间件 JSON Java
RabbitMQ消息队列
RabbitMQ消息队列
46 0
|
4月前
|
消息中间件
RabbitMQ 实现消息队列延迟
RabbitMQ 实现消息队列延迟
123 0
|
8天前
|
消息中间件 大数据 Java
消息队列 MQ
消息队列 MQ
18 3
|
12天前
|
消息中间件 数据安全/隐私保护
MQTT微消息队列服务器连接报错:Error: Connection refused: Not authorized
使用MQTTX工具进行测试时,通过AccessKey创建了Client ID的用户名和密码。配置了公网接入点及端口1883,但尝试连接时出现错误。已附上工具截图:![](https://ucc.alicdn.com/pic/developer-ecology/3byii5uar64gg_36327474e991439da422f38c450ef153.png)。确认过用户名、密码和Client ID无误,问题仍未解决,期待回复!