大话RabbitMQ入门

----------写在前面----------

近些年微服务越来越火,让我也忍不住想去一窥微服务究竟,讲到微服务,就离不开分布式,而分布式,也离不开消息队列,在消息队列中,RabbitMQ可以说是比较具有代表性的一款。

 

这里是一篇介绍消息队列以及各种消息队列产品对比的文章,讲得很好,有兴趣的可以看一看。

https://cloud.tencent.com/developer/article/1006035

 

在讲RabbitMQ之前,首先需要在电脑上安装和配置RabbitMQ,网络上已经有很多这类文章,如果懒得去搜索,可以看看这篇介绍如何安装配置RabbitMQ的文章。

 

https://blog.csdn.net/weixin_39735923/article/details/79288578

 

其中,在安装RabbitMQ的过程中,遇到了一个坑,在启用RabbltMQ的管理界面执行

rabbitmq-plugins enable rabbitmq_management

命令时,出现了以下这样的报错

 

大话RabbitMQ入门

可以在该指令前加上 .\ 即

.\rabbitmq-plugins enable rabbitmq_management

 

祝安装顺利 !!

 -------正文------ 基本概念

下面是在.Net中使用RabbitMQ要明白的一些名词概念。

 

Producer:消息发送方

------------------------------

Consumer:消息接收方

--------------------------------

Connection :程序与RabbitMQ之间的连接,类似连接数据库所用的DbConnection。

-------------------------------------------------------------------------------------------------------------

Channel :每个Connection可以有多个Channel,每个Chanel代表一次会话任务。

------------------------------------------------------------------------------------------------------

Exchange :RabbitMQ传递模型的核心思想是生产者和消费者不直接发生关系,即生产者并不知道消费者的存在,他们之间就是通过Exchange进行消息的分发。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Routing Key:路由关键字是Exchange把消息分发给Queue的规则(消息能否发给Queue的一个判断条件)。

----------------------------------------------------------------------------------------------------------------------------------------------

Queue:消息队列,Exchange把消息分发给Queue,消费者再从Queue中取数据。

----------------------------------------------------------------------------------------------------------

Binding:Binding使得Exchange和Queue之间发生联系。

 

综上所诉,他们之间的关系可以用我下面的 丑图 表示。

 

大话RabbitMQ入门

在图中,没有吧Routing key画出。Producer每一次发送消息,除了发出消息本身,还会随着消息带上一个routingKey,而且每一次将Exchange和Queue绑定,大体需要三个参数,

string queueName, string exchangeName, string routingKey

其中也有一个routingKey,但此RoutingKey非彼Routingkey。

大白话

对这个过程,我们可以理解为国家给灾区发送救灾物资,国家给当地政府划拨物资的时候,会规定,谁才能拿到这批物资,如(房子倒了的.家里有人受伤了的.家庭经济困难的)。

 

而当地政府在分配这批物资之前,为了方便物资的分配,会给每个家庭贴上一个标签,如

 

家庭A 经济困难

家庭B 房子倒了.经济困难

家庭C 家庭富有.房子倒了

家庭D 房子倒了的.家里有人受伤了的.家庭经济困难的

 

所以,发送消息时候的routingKey就是国家规定的那批物质分配规则。

而Exchange和Queue绑定时的RoutingKey可以理解为当地政府给每个家庭贴上的一个标签。

 

 

Exchange(交换机)转发消息的规则也有很多种:direct, topic, headers(不常用) 和 fanout,我们称之为交换类型。

 

我们可以把Exchange理解为分配这批物质的政府,现在国家规定了宏观的分配方向(发送消息时的routingKey),每个家庭也有了家庭情况的标签(绑定Exchange时的routingKey),但是这个物资具体怎么分,还是当地政府说了算。

 

Direct 严格按照国家规定来,只有房子倒了的,家里有人受伤了的而且家庭经济困难的才能分到救灾物资。    家庭D能分到

 

Fanout 只要是灾区的居民都能分到, 不管家庭情况如何。 家庭A\B\C\D都能分到

 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpzfxf.html