前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RabbitMQ 入门系列(一)

RabbitMQ 入门系列(一)

作者头像
凌虚
发布2020-07-17 12:16:45
3760
发布2020-07-17 12:16:45
举报

消息中间件 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 ,而后续的文章将会给出具体的代码继续入门。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-02-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Node Python Go全栈开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 CMQ 版
消息队列 CMQ 版(TDMQ for CMQ,简称 TDMQ CMQ 版)是一款分布式高可用的消息队列服务,它能够提供可靠的,基于消息的异步通信机制,能够将分布式部署的不同应用(或同一应用的不同组件)中的信息传递,存储在可靠有效的 CMQ 队列中,防止消息丢失。TDMQ CMQ 版支持多进程同时读写,收发互不干扰,无需各应用或组件始终处于运行状态。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档