rabbitmq基础(1)

1、背景

能实现消息队列的框架软件有很多,kafka、rabbitmq、RocketMq、activeMq、Redis(非专业),各有各的特点和优缺点。但是之前的公司数据需求规模并非很大,所以采用rabbitmq作为消息队列。

2、rabbitMq的基础架构

官方地址: RabbitMQ Documentation | RabbitMQ

  • rabbitmq是由erlang语言开发的一款高性能的易扩展的消息中间件,基于amqp协议。
  • rabbitmq架构工作流程图

3、概念解读

Broker: 简单来说就是消息队列服务器实体。中文意思:中间件。接受客户端连接,实现AMQP消息队列和 路由功能的进程。一个broker里可以开设多个vhost,用作不同用户的权限分离。

Exchange:消息交换机,它指定消息按照什么规则,路由到哪个队列。

Queue:消息的载体,每个消息会被投到一个或者多个队列。

Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来。

​ Routing Key:路由关键字,exchange根据这个关键字进行消息投递。

vhost:虚拟主机,一个broker里面可以有很多个vhost,用作不同的用户的权限隔离。

Producer:消息生产者,即消息发送方。

Consumer:消息消费者,即消息接收方。

Channel:消息通道,在客户端的每个链接里,可建立多个channel。

从【2】示意图可以看出来,消息生成者没有直接将消息发送给消息队列,而是通过建立与Exchange的channel,将消息发送给Exchange根据规则,再将消息转发给指定的队列。消费者通过建立与消息队列相连的channel,从消息队列中获取消息。

这里谈到的Channel可以理解为建立在生产者/消费者和RabbitMQ服务器之间的TCP连接上的虚拟连接,一个TCP连接上可以建立多个Channel。 RabbitMQ服务器的Exchange对象可以理解为生产者发送消息的邮局,消息队列可以理解为消费者的邮箱。Exchange对象根据它定义的规则和消息包含的routing key以及header信息将消息转发到消息队列。

根据转发消息的规则不同,RabbitMQ服务器中使用的Exchange对象有四种,Direct Exchange, Fanout Exchange, Topic Exchange, Header Exchange,如果定义Exchange时没有指定类型和名称, RabbitMQ将会为每个消息队列设定一个Default Exchange,它的Routing Key是消息队列名称。

更多的概念还是需要自行去官方文档查阅,才能知其所以然。

相关推荐
添砖java_8576 小时前
基于RabbitMQ实现的轻量队列测试报告
分布式·rabbitmq
Zhu7587 小时前
使用腾讯CNB构建Hadoop定制容器镜像
大数据·hadoop·分布式
TTBIGDATA8 小时前
【Ambari Plus】13.Spark 安装
大数据·hadoop·分布式·spark·ambari·sqoop·ambari plus
sunxunyong10 小时前
Hadoop租户创建
大数据·hadoop·分布式
得物技术10 小时前
得物 OceanBase 落地实践
数据库·分布式·架构
GuangdongTong11 小时前
基于RabbitMQ实现延迟任务
后端·rabbitmq
heimeiyingwang12 小时前
【架构实战】分布式ID生成:从自增ID到雪花算法
分布式·架构
微三云 - 廖会灵 (私域系统开发)1 天前
电商系统微服务拆分实战:从单体到Spring Cloud的分布式事务踩坑与补偿方案
分布式·spring cloud·微服务
ACP广源盛139246256731 天前
破局 PCIe 4.0 交换瓶颈@ACP#IX8024 / ASM58024参数及应用对比
大数据·人工智能·分布式·嵌入式硬件
淡然的煎蛋1 天前
开始使用RabbitMQ
分布式·rabbitmq·ruby