RabbitMQ理论及架构

什么是RabbitMQ

先来了解什么是AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。RabbitMQ是基于AMQP协议的一种实现,RabbitMQ服务端由Erlang语言编写,用于在分布式系统中提供消息储存和转发。本章将具体介绍一下RabbitMQ的概念已经相关原理架构。

RabbitMQ架构图

在这里插入图片描述

里面涉及到几个名词
  1. Producer
  2. Consumer
  3. Exchange
  4. Queue
  5. Channel
一、Producer
消息的生产者,负责生产消息并发送到消息队列中,供消费者消费。
二、Consumer
消费者,从队列中获取消息并消费。
三、Exchange
消息的路由器,分为四种类型,不通类型根据不同的规则和算法,将消息发送到不同的队列上。

Direct
直接交换器,工作方式类似于单播,Exchange会将消息发送完全匹配ROUTING_KEY的Queue

fanout
广播是式交换器,不管消息的ROUTING_KEY设置为什么,Exchange都会将消息转发给所有绑定的Queue。

topic
主题交换器,工作方式类似于组播,Exchange会将消息转发和ROUTING_KEY匹配模式相同的所有队列,比如,ROUTING_KEY为user.stock的Message会转发给绑定匹配模式为 * .stock,user.stock, * . * 和#.user.stock.#的队列。( * 表是匹配一个任意词组,#表示匹配0个或多个词组)

headers
消息体的header匹配(ignore)

四、Queue

消息队列,提供了FIFO(先进先出)的处理机制,具有缓存消息的能力。rabbitmq中,队列消息可以设置为持久化,临时或者自动删除。

设置为持久化的队列,queue中的消息会在server本地硬盘存储一份,防止系统crash,数据丢失
设置为临时队列,queue中的数据在系统重启之后就会丢失
设置为自动删除的队列,当不存在用户连接到server,队列中的数据会被自动删除

五、Chanel
在图中并未展示出来,生产者的消息并不是直接发送给exchange,而是先与exchange建立一个连接(通道),通过这个连接传递给exchange,而这个连接就是chanel,是一个基于tcp协议的连接。

更多的可以参考更详细的配置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值