首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

RabbitMQ 入门系列(一)

消息中间件 MQ(也称消息队列)的基本功能是传递和转发消息,其最重要的作用是能够解耦业务及系统架构,可以说是一个系统发展壮大到一定阶段绕不开的东西。

而 RabbitMQ 是对 AMQP(高级消息队列协议)的实现,成熟可靠并且开源,本系列文章将会讲述如何在 node 中入门这一利器。

01

RabbitMQ 概述

先来简单的了解一下 RabbitMQ 相关的基本概念:

Producer :生产者,生成消息并把消息发送给 RabbitMQ 。

Consumer :消费者,从 RabbitMQ 中接收消息。

Exchange :交换器,具有路由的作用,将生产者传递的消息根据不同的路由规则传递到对应的队列中。交换器具有四种不同的类型,每种类型对应不同的路由规则。

Queue :队列,实际存储消息的地方,消费者通过订阅队列来获取队列中的消息。

Binding :绑定交换器和队列,只有绑定后消息才能被交换器分发到具体的队列中,用一个字符串来代表Binding Key。

消息是如何由生产者传递到消费者:

1、生产者 Producer 生成消息 msg ,并指定这条消息的路由键 Routing Key ,然后将消息传递给交换器 Exchange 。

2、交换器 Exchange 接收到消息后根据 Exchange Type 也就是交换器类型以及交换器和队列的 Binding 绑定关系来判断路由规则并分发消息到具体的队列 Queue 中。

3、消费者 Consumer 通过订阅具体的队列,一旦队列接收到消息便会将其传递给消费者。

这里的 Routing Key 和 Binding 我是按照自己的理解解释的,与某些参考资料是有出入的,读者理解就好。

当然完成上述三个步骤还缺少两个关键的东西:

Connection :连接,不论生产者还是消费者想要使用 RabbitMQ 都必须首先建立到RabbitMQ 的 TCP 连接。

Channel :信道,建立完TCP 连接后还必须建立一个信道,消息都是在信道中传递和操作的。

上图形象的展示了连接和信道之间的关系,一个连接中可以建立多个信道,而且每个信道之间都是完全隔离的,同时我们需要记住的是创建和销毁 TCP 连接是很消耗资源的,而信道则不是,所以能够通过创建多个信道来隔离环境的不要通过创建多个连接。

02

交换器类型

交换器具有路由分发消息的作用,其有四种不同的类型,每种类型对应不同的路由规则:

fanout :广播,将消息传递给所有该交换器绑定的队列。

direct :直连,将消息传递给 Routing Key 与 Binding Key完全一致的队列中,可以有多个队列。

topic :模糊匹配,Binding Key 是一个可以用符号 . 分隔单词的字符串,模糊匹配下,符号 * 用于匹配任意一个单词,符号 # 用于匹配零个或多个单词。

headers :这个比较特殊,是根据消息中具体内容的 header 属性来作为路由规则的,这种类型对资源消耗太大,一般很少使用,前面三种类型就够了。

作为入门系列的第一篇文章,本文简单讲述了 RabbitMQ 中的一些基本概念,熟悉了这些概念之后有助于我们后续操作RabbitMQ,而后续的文章将会给出具体的代码继续入门。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180227G1HJXJ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券