ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

AMQP协议模型及相关组件介绍

2021-11-24 10:31:47  阅读:288  来源: 互联网

标签:AMQP exchange JMS 模型 broker 消息 组件 路由


AMQP(Advanced Message Queueing Protocol)协议是一个开放的标准的的协议,它定义了系统之间如何传递消息。AMQP不仅定义了consumer/producer/broker之间如何交互,也定义了消息的格式和命令的交换。因为它定义了消息的格式,AMQP是跨平台的,与具体生产厂商和主机平台无关。由于AMQP是开放的,AMQP有很多活跃的基于多种语言编写的broker和client的项目。这篇文章主要介绍AMQP描述的基本模型。

核心概念

先来看看AMQP的核心概念:

Broker:代表着一个中间件应用,负责接收消息生产者的消息,然后将消息发送至消息接受者或者其他的broker。

Virtual host:这是对broker的虚拟化分,主要用于对consumer、producer和他们依赖的AMQP相关结构进行隔离。通常是处于安全因素的考虑。

Connection:代表着producer、consumer和broker之间的物理网络(TCP),connection只有在客户端断开连接或者网络问题的时候会断开。

Channel:代表着producer、consumer和broker之间的逻辑连接,一个Connection可以包含多个Channel。Channel使得基同一连接的不同进程之间与broker之间的交互相互隔离,不干扰。而不需要重新建立连接,channel在发生协议错误的时候会被关闭。

Exchange:这是所有被发送的消息首先到达的目的地,Exchange负责根据路由规则将消息路由到不同的目的地。路由规则包括下面几种:direct(point-to-point)、topic(publish-subscribe)和fanout(multicast)。

Queue:这是消息到达的最终目的地,到达queue的消息是已经准备好被消费的消息,一个消息可以被exchange copy发送至多个queue。

Binding:这是queue和exchange之间的虚拟连接,使得消息从哪个exchange路由到Queue。routing key可以通过binding和exchange routing规则关联。

下面给出AMQP协议的概念模型图:

相关协议

那么,AMQP和其他的协议有什么区别呢,下面简单介绍一下:

Java Message Service(JMS):与AMQP不同的是,JMS只定义了JAVA编程接口协议,而没有定义消息的具体格式。因此,JMS适用范围较小,只能够用于特定的客户端和broker。而且相比AMQP,JMS没有定义命令交互、消息路由。最后,在JMS中,消息发送者需要知道消息目的的拓扑。在AMQP中,路由逻辑被封装在了exchange之中,从而保护了消息的发送者。

MQ Telemetry Transport(MQTT):这是一个极其轻量级的消息队列协议。MQTT只专注于消息发送-消息订阅模型。和AMQP一样,交互性比较强并且适合嵌入式系统,同样它也需要一个broker用于订阅管理和消息路由。RabbitMQ可以和MQTT通信,这是令人兴奋的。

ZeroMQ:提供了消息的一种语义,不需要中心化的broker(但是没有broker提供的持久化和保证送达机制)。是一个可交互的网络编程库,基于多种语言实现。它是一个构建高可用性和高扩展性系统的一种选择。

标签:AMQP,exchange,JMS,模型,broker,消息,组件,路由
来源: https://www.cnblogs.com/johnvwan/p/15596981.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有