前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux云计算运维架构师(连载)-消息队列-RabbitMQ-04

Linux云计算运维架构师(连载)-消息队列-RabbitMQ-04

原创
作者头像
用户1880875
修改2021-07-06 11:04:46
2750
修改2021-07-06 11:04:46
举报
文章被收录于专栏:用户1880875的专栏

l Queue

消息队列,用来保存消息,直到发送给消费者,是消息的容器,也是消息的终点。一个消息可投入一个或多个队列。消息一致在队列里面,等待消费者连接到这个队列将其取走。

l Bingding

绑定,用于消息队列和交换器之间的关联。一个绑定就是基于路由键,将交换器和消息队列连接起来的路由规则,所以可以将交换器理解为一个由绑定构成的路由表。

l Virtual Host

虚拟主机,表示一批交换器、消息队列和相关对象。虚拟主机是共享相同的身份认证和加密环境的独立服务器区域。也就是说虚拟主机、交换器、队列、绑定等是通过虚拟机来实现的。每个Vhost本质上就是一个mini版的RabbitMQ服务器,拥有自己的队列、交换器、绑定和权限机制。Vhost是AMQP概念的基础,必须再连接时指定,RabbitMQ默认的vhost是"/"。

l Broker

可以理解为RabbitMQ的服务器实体,可以理解为在Linux上创建的虚拟机实体。

l Connection

连接,可以理解为RabbitMQ服务器和服务建立的TCP的连接。

l Channel

信道,也可以称为管道,是TCP里的虚拟连接。一条TCP连接,可以包含很多条的Channel。假设TCP是电缆,信道是一条独立光纤束,一条TCP连接上创建多少条信道是没有限制的。TCP一旦打开,就会创建AMQP信道,无论是发布消息、接收消息、订阅消息,这些动作都是通过信道完成的。

l Consumer

消息的消费者,表示一个从消息队列中取得消息的客户端应用程序,和Producer类似,可以简单理解为就是一个Java程序。

5.1.4 RabbitMQ的通信过程

其实RabbitMQ就是一个生产者与消费者模型,主要负责接收、存储和转发消息。可以把消息传递的过程想象成收发快递的过程,发件人将一个包裹送到快递站,快递员会暂存并最终将该快递通过快递员送到收件人的手上。RabbitMQ就好比由快递公司、快递站和快递员组成的系统。从计算机术语层面来说,RabbitMQ模型更像是一种交换机模型。RabbitMQ的架构如图5.3所示。

图5.1 RabbitMQ架构

其通信过程大致可以分为以下五步。

(1) 消息生产者生产消息,发送给RabbitMQ系统中的交换器;

(2) 交换器收到消息,根据ROUTINKEY,将消息转发给匹配的队列;

(3) 消息队列收到消息,将消息发送给匹配的消息消费者;

(4) 消息消费者收到消息,发送ACK给队列确认收到消息;

(5) 消息队列收到ACK,删除队列中缓存的此条消息。

5.1.1 RabbitMQ的应用场景

RabbitMQ的使用场景,其实也就是消息队列的使用场景,主要有以下四种。

1. 解耦,比如系统A会交给系统B去处理一些事情,通过将A、B中间加入消息队列,A将要处理的事情交给消息队列,B的输入来源于消息队列。系统可以利用RabbitMQ来对用户的请求进行解耦。

2. 保证顺序,遵循先来先处理,比如一个系统处理某件事需要很长一段时间,但是在处理这件事情时候,有其他人也发出了请求,可以把请求放在消息队里,一个一个来处理。

3. 消息路由,按照不同的规则,将队列中消息发送到不同的其他队列中。

4. 异步处理,处理一件事情,需要甲先做A,然后做乙丙丁分别处理B、C、D,B、C、D这三件事情在A之后,但是相互之间没有关联。此时甲处理A之后,把事件发送到消息队列里边,乙丙丁接受到事件之后再分别处理B、C、D。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

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