From 531498f486e541eb45c31f971b8b5b4df210d06d Mon Sep 17 00:00:00 2001 From: luoxiang <2806718453@qq.com> Date: Fri, 2 Aug 2019 07:39:42 +0800 Subject: [PATCH] =?UTF-8?q?rabbitmq=20=E5=9F=BA=E7=A1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- notes/RabbitMQ_基础.md | 74 +++++++++++------- pictures/rabbitmq-direct-exchange-2.png | Bin 0 -> 12403 bytes ...hange.png => rabbitmq-direct-exchange.png} | Bin pictures/rabbitmq-fanout-exchange.png | Bin 0 -> 8618 bytes ...change.png => rabbitmq-topic-exchange.png} | Bin pictures/rabbitmq-架构.jpg | Bin 39876 -> 0 bytes pictures/rabbitmq-架构.png | Bin 21731 -> 0 bytes pictures/rabbitmq-模型架构.png | Bin 0 -> 54668 bytes 8 files changed, 45 insertions(+), 29 deletions(-) create mode 100644 pictures/rabbitmq-direct-exchange-2.png rename pictures/{direct-exchange.png => rabbitmq-direct-exchange.png} (100%) create mode 100644 pictures/rabbitmq-fanout-exchange.png rename pictures/{topic-exchange.png => rabbitmq-topic-exchange.png} (100%) delete mode 100644 pictures/rabbitmq-架构.jpg delete mode 100644 pictures/rabbitmq-架构.png create mode 100644 pictures/rabbitmq-模型架构.png diff --git a/notes/RabbitMQ_基础.md b/notes/RabbitMQ_基础.md index 61c2165..627de1d 100644 --- a/notes/RabbitMQ_基础.md +++ b/notes/RabbitMQ_基础.md @@ -2,18 +2,18 @@ ## 一、消息队列 -消息队列中间件 (Message Queue Middleware,简称 MQ) 是指利用高效可靠的消息传递机制进行与平台无关的数据交流,它可以在分布式环境下扩展进程间的数据通信,并基于数据通信来进行分布式系统的集成。它还可以运用于以下场景: +消息队列中间件 (Message Queue Middleware,简称 MQ) 是指利用高效可靠的消息传递机制进行与平台无关的数据交流,它可以在分布式环境下扩展进程间的数据通信,并基于数据通信来进行分布式系统的集成。它主要适用于以下场景: + **项目解耦**:不同的项目或模块可以使用消息中间件进行数据的传递,从而可以保证模块的相对独立性,实现解耦。 + **流量削峰**:可以将突发的流量 (如秒杀数据) 写入消息中间件,然后由多个消费者进行异步处理。 + **弹性伸缩**:可以通过对消息中间件进行横向扩展来提高系统的处理能力和吞吐量。 -+ **发布订阅**:可以用于需要进行数据的发布和订阅通知的场景。 -+ **异步处理**:某些时候我们可能并不需要立即对数据进行处理,或者不关心处理的结果,此时可以使用中间件进行异步处理。 ++ **发布订阅**:可以用于任意的发布订阅模式中。 ++ **异步处理**:当我们不需要对数据进行立即处理,或者不关心数据的处理结果时,可以使用中间件进行异步处理。 + **冗余存储**:消息中间件可以对数据进行持久化存储,直到你消费完成后再进行删除。 ## 二、AMQP协议 -AMQP (Advanced Message Queuing Protocol) 是一个提供统一消息服务的应用层通讯协议,为消息中间件提供统一的开发规范。不同客户端可以将消息投递到中间件上,或从上面获取消息,发送消息和接收消息的客户端可以采用不同的语言开发、不同的技术实现,但必须遵循相同的 AMQP 协议。AMQP 协议本身包括以下三层: +AMQP (Advanced Message Queuing Protocol) 是一个提供统一消息服务的应用层通讯协议,为消息中间件提供统一的开发规范。不同客户端可以将消息投递到中间件上,或从上面获取消息;发送消息和接收消息的客户端可以采用不同的语言开发、不同的技术实现,但必须遵循相同的 AMQP 协议。AMQP 协议本身包括以下三层: - **Module Layer**:位于协议最高层,主要定义了一些供客户端调用的命令,客户端可以利用这些命令实现自己的业务逻辑。例如:可以使用 Queue.Declare 命令声明一个队列或者使用 Basic.Consume 订阅消费一个队列中的消息。 - **Session Layer**:位于中间层,主要负责将客户端的命令发送给服务器,再将服务端的应答返回给客户端,主要为客户端与服务器之间的通信提供可靠性同步机制和错误处理。 @@ -29,7 +29,7 @@ RabbitMQ 完全实现了 AMQP 协议,并基于相同的模型架构。RabbitMQ - 支持跨语言开发,如:Java,.NET,PHP,Python,JavaScript,Ruby,Go; -- 可以通过集群来实现高可用性和高吞吐,还可以通过 Federation 插件来连接不同的服务节点; +- 可以通过集群来实现高可用性和高吞吐,还可以通过 Federation 插件来连接跨机房跨区域的不同版本的服务节点; - 插拔式的身份验证和授权,支持 TLS 和 LDAP; @@ -37,22 +37,23 @@ RabbitMQ 完全实现了 AMQP 协议,并基于相同的模型架构。RabbitMQ - 能够使用多种方式进行监控和管理,如 HTTP API,命令行工具和 UI 界面。 - ## 四、模型架构 -![rabbitmq-架构](D:\Full-Stack-Notes\pictures\rabbitmq-架构.png) +RabbitMQ 与 AMQP 遵循相同的模型架构,其架构示例图如下: -### 1. Producer(生产者) +![rabbitmq-模型架构](D:\Full-Stack-Notes\pictures\rabbitmq-模型架构.png) -生产者负责生产消息并将其投递到指定的交换器上。 +### 1. Publisher(发布者) + +发布者 (或称为生产者) 负责生产消息并将其投递到指定的交换器上。 ### 2. Message(消息) -消息由消息头和消息体组成。消息头用于存储元信息:如目标交换器的名字 (exchange_name) 、路由键 (RountingKey) 和其他可选配置 (properties) 等信息。消息体为实际需要传递的业务信息。 +消息由消息头和消息体组成。消息头用于存储与消息相关的元数据:如目标交换器的名字 (exchange_name) 、路由键 (RountingKey) 和其他可选配置 (properties) 信息。消息体为实际需要传递的数据。 ### 3. Exchange(交换器) -交换器负责接收来自生产者的消息,并将将消息路由到一个或者多个队列中,如果路由不到,则返回给生产者或者直接丢弃,这取决于交换器的 immediate 属性: +交换器负责接收来自生产者的消息,并将将消息路由到一个或者多个队列中,如果路由不到,则返回给生产者或者直接丢弃,这取决于交换器的 mandatory 属性: + 当 mandatory 为 true 时:如果交换器无法根据自身类型和路由键找到一个符合条件的队列,则会将该消息返回给生产者; + 当 mandatory 为 false 时:如果交换器无法根据自身类型和路由键找到一个符合条件的队列,则会直接丢弃该消息。 @@ -63,7 +64,7 @@ RabbitMQ 完全实现了 AMQP 协议,并基于相同的模型架构。RabbitMQ ### 5. Routingkey(路由键) -生产者将消息发给交换器的时候,一般会指定一个 RountingKey,用来指定这个消息的路由规则。当 RountingKey 与 BindingKey 基于交换器的类型相匹配时,消息被路由到对应的队列中。 +生产者将消息发给交换器的时候,一般会指定一个 RountingKey,用来指定这个消息的路由规则。当 RountingKey 与 BindingKey 基于交换器类型的规则相匹配时,消息被路由到对应的队列中。 ### 6. Queue(消息队列) @@ -71,9 +72,9 @@ RabbitMQ 完全实现了 AMQP 协议,并基于相同的模型架构。RabbitMQ ### 7. Consumer(消费者) -消费者订阅感兴趣的队列,并负责消费存储在队列中的消息。为了保证消息能够从队列可靠的到达消费者,RabbitMQ 提供了消息确认机制 (message acknowledgement),并通过 autoAck 参数来进行控制: +消费者订阅感兴趣的队列,并负责消费存储在队列中的消息。为了保证消息能够从队列可靠地到达消费者,RabbitMQ 提供了消息确认机制 (message acknowledgement),并通过 autoAck 参数来进行控制: -+ 当 autoAck 为 true 时:此时消息发送出去 (写入TCP套接字) 后就认为消费成功,而不管消费者是否真正消费到这些消息。当 TCP 连接或 channel 因意外而关闭,或者消费者在消费过程之中意外宕机,则对应的消息就丢失。因此这种模式可以提高吞吐量,但会存在数据丢失的风险。 ++ 当 autoAck 为 true 时:此时消息发送出去 (写入TCP套接字) 后就认为消费成功,而不管消费者是否真正消费到这些消息。当 TCP 连接或 channel 因意外而关闭,或者消费者在消费过程之中意外宕机时,对应的消息就丢失。因此这种模式可以提高吞吐量,但会存在数据丢失的风险。 + 当 autoAck 为 false 时:需要用户在数据处理完成后进行手动确认,只有用户手动确认完成后,RabbitMQ 才认为这条消息已经被成功处理。这可以保证数据的可靠性投递,但会降低系统的吞吐量。 ### 8. Connection(连接) @@ -82,11 +83,11 @@ RabbitMQ 完全实现了 AMQP 协议,并基于相同的模型架构。RabbitMQ ### 9. Channel(信道) -RabbitMQ 采用类似 NIO (非阻塞式 IO ) 的设计,通过 Channel 来复用 TCP 连接,并确保每个 Channel 的隔离性,就像拥有的是独立的 Connection 连接。当数据流量不是很大时,采用连接复用技术可以避免创建过多的 TCP 连接而导致昂贵的性能开销。 +RabbitMQ 采用类似 NIO (非阻塞式 IO ) 的设计,通过 Channel 来复用 TCP 连接,并确保每个 Channel 的隔离性,就像是拥有独立的 Connection 连接。当数据流量不是很大时,采用连接复用技术可以避免创建过多的 TCP 连接而导致昂贵的性能开销。 ### 10. Virtual Host(虚拟主机) -RabbitMQ 支持多租户,并通过虚拟主机来实现逻辑分组和资源隔离,一个虚拟主机就是一个小型的 RabbitMQ 服务器,拥有独立的队列、交换器和绑定关系。用户可以按照不同业务场景建立不同的虚拟主机,虚拟主机之间是完全独立的,你无法将 vhost1 上的交换器与 vhost2 上的队列进行绑定,这可以极大的保证业务之间的隔离性和数据安全。默认的虚拟主机为 `/` 。 +RabbitMQ 支持多租户,并通过虚拟主机来实现逻辑分组和资源隔离,一个虚拟主机就是一个小型的 RabbitMQ 服务器,拥有独立的队列、交换器和绑定关系。用户可以按照不同业务场景建立不同的虚拟主机,虚拟主机之间是完全独立的,你无法将 vhost1 上的交换器与 vhost2 上的队列进行绑定,这可以极大的保证业务之间的隔离性和数据安全。默认的虚拟主机名为 `/` 。 ### 11. Broker @@ -94,48 +95,60 @@ RabbitMQ 支持多租户,并通过虚拟主机来实现逻辑分组和资源 ## 五、交换器类型 +RabbitMQ 支持多种交换器类型,常用的有以下四种: + ### 5.1 fanout -把消息路由到与该交换器绑定的所有队列中。 +这是最简单的一种交换器模型,此时会把消息路由到与该交换器绑定的所有队列中。如下图,任何发送到 X 交换器上的消息,都会被路由到 Q1 和 Q2 两个队列上。 + +![rabbit-fanout-exchange](D:\Full-Stack-Notes\pictures\rabbitmq-fanout-exchange.png) ### 5.2 direct -把消息路由到 BindingKey 和 RountingKey 完全一样的队列中。 +把消息路由到 BindingKey 和 RountingKey 完全一样的队列中。如下图,当消息的 RountingKey 为 orange 时,消息会被路由到 Q1 队列;当消息的 RountingKey 为 black 或 green 时,消息会被路由到 Q2 队列。 + +![rabbit-direct-exchange](D:\Full-Stack-Notes\pictures\rabbitmq-direct-exchange.png) + +需要特别说明的是一个交换器绑定多个队列时,它们的 BindingKey 是可以相同的,如下图。此时当消息的 RountingKey 为 black 时,消息会同时被路由到 Q1 和 Q2 队列。 + +![rabbit-direct-exchange](D:\Full-Stack-Notes\pictures\rabbitmq-direct-exchange-2.png) ### 5.3 topic 将消息路由到 BindingKey 和 RountingKey 相匹配的队列中,匹配规则如下: -- RountingKey 和 BindingKey 由多个单词使用`.`号进行连接; -- BindingKey 支持两个特殊符号:`#`和`*` 。其中`*`用于匹配一个单词,`#`用于匹配零个或者多个单词。 +- RountingKey 和 BindingKey 由多个单词使用逗号 `.` 进行连接; +- BindingKey 支持两个特殊符号:`#` 和 `*` 。其中 `*` 用于匹配一个单词, `#` 用于匹配零个或者多个单词。 -以下是官方文档中的示例,交换器与队列的 BindingKey 如图所示: +以下是官方文档中的示例,交换器与队列的绑定情况如图所示,此时的路由情况如下: -![topic-exchange](D:\Full-Stack-Notes\pictures\topic-exchange.png) +![topic-exchange](D:\Full-Stack-Notes\pictures\rabbitmq-topic-exchange.png) + 路由键为 `lazy.orange.elephant` 的消息会发送给所有队列; -+ 路由键为 `quick.orange.fox` 的消息只会发送给第一个队列; -+ 路由键为 `lazy.brown.fox` 的消息只会发送给第二个队列; -+ 路由键为 `lazy.pink.rabbit` 的消息只会发送给第二个队列; ++ 路由键为 `quick.orange.fox` 的消息只会发送给 Q1 队列; ++ 路由键为 `lazy.brown.fox` 的消息只会发送给 Q2 队列; ++ 路由键为 `lazy.pink.rabbit` 的消息只会发送给 Q2 队列; + 路由键为 `quick.brown.fox` 的消息与任何绑定都不匹配; + 路由键为 `orange` 或 `quick.orange.male.rabbit` 的消息也与任何绑定都不匹配。 ### 5.4 headers -在 Queue 与 Exchange 进行绑定时可以指定一组键值对作为 BindingKey;在发送消息的 headers 中的可以指定一组键值对属性,当这些属性与 BindingKey 相匹配时,则将消息路由到该队列。同时还可以使用 `x-match`指定匹配模式: +在交换器与队列进行绑定时可以指定一组键值对作为 BindingKey;在发送消息的 headers 中的可以指定一组键值对属性,当这些属性与 BindingKey 相匹配时,则将消息路由到该队列。同时还可以使用 `x-match` 参数指定匹配模式: - **x-match = all** :所有的键值对都相同才算匹配成功; - **x-match = any**:只要有一个键值对相同就算匹配成功。 +headers 类型的交换器性能比较差,因此其在实际开发中使用得比较少。 + ## 六、死信队列 -RabbitMQ 中另外一个比较常见的概念是死信队列。当消息在一个队列中变成死信 (dead message) 之后,它可以被重新被发送到另一个类型为 DLX 的交换器上。DLX 全称为 Dead-Letter-Exchange,即死信交换器,绑定 DLX 的队列就称之为死信队列。一个正常的消息变成死信一般是由于以下三个原因: +RabbitMQ 中另外一个比较常见的概念是死信队列。当消息在一个队列中变成死信 (dead message) 之后,它可以被重新被发送到死信交换器上 (英文为 Dead-Letter-Exchange,简称 DLX ),任何绑定死信交换器的队列都称之为死信队列。需要特别说明的是死信交换器和死信队列与正常的交换器和队列完全一样,采用同样的方式进行创建,它们的名称表达的是其功能,而不是其类型。一个正常的消息变成死信一般是由于以下三个原因: - 消息被拒绝 (Basic.Reject/Basic.Nack) ,井且设置重回队列的参数 requeue 为 false; - 消息过期; - 队列达到最大长度。 -我们可以通过在 channel.queueDeclare 方法中设置 x-dead-letter-exchange 参数来为指定队列添加 DLX,示例如下: +我们可以在队列创建的 channel.queueDeclare 方法中设置 x-dead-letter-exchange 参数来为正常队列添加死信交换器,当该队列中存在死信时,死信就会被发送到死信交换器上,进而路由到死信队列上。示例如下: ```java // 创建一个死信交换器 @@ -148,7 +161,7 @@ args.put("x-dead-letter-exchange", "some.exchange.name"); channel.queueDeclare("myqueue", false, false, false, args); ``` -除此之外,您还可以重新指定死信的路由键,如果没有指定,则默认使用原有的路由键,重新设置方法如下: +除此之外,您还可以重新指定死信的路由键,如果没有指定,则默认使用原有的路由键,重新设置的方法如下: ```shell args.put("x-dead-letter-routing-key", "some-routing-key"); @@ -158,5 +171,8 @@ args.put("x-dead-letter-routing-key", "some-routing-key"); ## 参考资料 +1. 朱忠华 . RabbitMQ实战指南 . 电子工业出版社 . 2017-11-1 +2. 官方文档:[RabbitMQ Tutorials](https://www.rabbitmq.com/getstarted.html) 、[Documentation: Table of Contents](https://www.rabbitmq.com/documentation.html) + diff --git a/pictures/rabbitmq-direct-exchange-2.png b/pictures/rabbitmq-direct-exchange-2.png new file mode 100644 index 0000000000000000000000000000000000000000..4f628f9a6b72a6f13a0aa8d133f785d5c669e1ce GIT binary patch literal 12403 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 X+bNN0mjUnx0|+t_3gV@r`ak|JDpR?* literal 0 HcmV?d00001 diff --git a/pictures/direct-exchange.png b/pictures/rabbitmq-direct-exchange.png similarity index 100% rename from pictures/direct-exchange.png rename to pictures/rabbitmq-direct-exchange.png diff --git a/pictures/rabbitmq-fanout-exchange.png b/pictures/rabbitmq-fanout-exchange.png new file mode 100644 index 0000000000000000000000000000000000000000..2116f695c831119c4c0680f768322f3b9ba3ef11 GIT binary patch literal 8618 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

h`_LWZ<*rC??C7(ZXQ1lT zfDR!CCnG!(rL>4cI(?Hk#ea<2xY|zLfnEzmq9}@ME{>#&e5N(m&;0=Hh4gnw%BMZx zqv_>YbsmI6!rxIw#Af(6TcVAiN|biPvheMnx%5mTnl;JF%JKx6BuX-Fk4RW{del7^ z_r3@>+6Uw&eY)+t8xrK~_%r|g7EKily{Fn%6Yu>wb#}TK9h5UYdm8Wk zBX{L)%%4oqer1^_JKFuPJ`+HnMI#?CS0yQ;$XprhS*i1;)`GRvxh!m({D=-wOmpsB z^NEYY^RHdp!x!-)D|Pn587aOaiv7dae(sdVW!dhA*m~*v2%aiM<00(&c$JX%Zz*`0 z#ip4bh5c-7jz>-nh35$1&JeQN@oyP9Gj%zs0)Rqb*NJhDNf)HEr)M2eWa$aA5h}lI z6_=8gZkzi}MwQNtenpI?cZi$2u)#mOQ0E(=s})V*P8b+2>`%HkBR#;_w!08#%cxTy zd=iYP+P?-GkQA}RTE?;I0@Jc*|1fWf2LuNrRt7wGJzP*@GE`P<6xxAHdhG z0C!EAI>|L4h7qw+pt0xwa~;9ItL*<%-5fFX0MySOaIq#5o1xSkvWTS=NFSw@rAj4? G{Qd(*&ClKd literal 0 HcmV?d00001 diff --git a/pictures/topic-exchange.png b/pictures/rabbitmq-topic-exchange.png similarity index 100% rename from pictures/topic-exchange.png rename to pictures/rabbitmq-topic-exchange.png diff --git a/pictures/rabbitmq-架构.jpg b/pictures/rabbitmq-架构.jpg deleted file mode 100644 index a26cd51fdc8c10fd2dda3726ae49b21d70692845..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39876 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 E7s_2pn*aa+ diff --git a/pictures/rabbitmq-架构.png b/pictures/rabbitmq-架构.png deleted file mode 100644 index c271ac748135339919f77d3af4dcc2425a9279ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21731 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 AtpET3 diff --git a/pictures/rabbitmq-模型架构.png b/pictures/rabbitmq-模型架构.png new file mode 100644 index 0000000000000000000000000000000000000000..584b1bab358be178bcef2e6527d4a40fe63a45ec GIT binary patch literal 54668 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 ykKhk