RabbitMQ基础核心概念介绍


前言

本文主要记录一下rabbitmq的一些基础概念,便于日后的学习交流使用.


一、RabbitMQ是什么?

RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端。(百度百科)
其中,AMQP是一个具有现代特征的二进制协议。是一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开发标准。为面向消息的中间件设计,AMQP的协议模型如下:
AMQP的协议模型

二、RabbitMQ的应用场景

1. 服务解耦

多系统、异构系统间的数据交换(消息通知/通讯)问题,也可以把它用于系统间服务的相互调用(RPC)

2. 削峰

一般在秒杀或团抢活动中使用广泛,可以缓解短时间内高流量压垮应用

3.异步化缓冲

将不是必须的业务逻辑,异步处理,如:
用户在注册成功时,给用户发送注册邮件和短信通知的业务逻辑可以使用rabbitmq异步处理,提升系统的响应速度

三、RabbitMQ的核心概念

1.Server

又称Broker,接受客户端的连接,实现AMQP实体服务

2.Connection

是RabbitMQ的socket链接(也就是应用程序与Broker之间的网络连接),它封装了socket协议相关部分逻辑

3.Channel

网络信道,几乎所有的操作都在Channel中进行,包括定义Queue、定义Exchange、绑定Queue与Exchange、发布消息等。
客户端可建立多个Channel,每个Channel代表一个会话任务。

4.Message

消息,服务器和应用程序之间传送的数据,由Properties和Body组成。Properties可以对消息进行修饰,比如消息的优先级、延迟等高级特性;Body则就是消息体内容。

5.Virtual Host

虚拟地址,用于进行逻辑隔离,最上层的消息路由。一个Virtual Host里面可以有多个Exchange和Queue,同一个Virtual Host不能有相同名称的Exchange或Queue。

6.Exchange

交换机,接收消息,根据路由键(routing key)转发消息到对应的队列(Queue)

6.1 交换机的属性

1、Name:交换机名称
2、Type:交换机类型:fanout、direct、topic、headers
3、Durability:是否需要持久化,true为持久化
4、Auto Delete:当最后一个绑定到Exchange上的队列删除后,自动删除该Exchange
5、Internal:当前Exchange是否用于RabbitMQ内部使用,默认为false
6、Arguments:扩展参数,用于扩展AMQP协议自制定化使用

7.Binding

Exchange和Queue之间的虚拟连接,binding中可以包含routing key

8.Routing key

消息的路由规则,routing key需要与Exchange Type及binding key联合使用才能最终生效。
RabbitMQ为routing key设定的长度限制为255 bytes。

9.Queue

也称Message Queue,消息队列,保存消息并转发给消费者。多个消费者可以订阅同一个Queue,这时Queue中的消息会被平均分摊给多个消费者进行处理,而不是每个消费者都收到所有的消息并处理。

10.Binding key

在绑定(Binding)Exchange与Queue的同时,一般会指定一个binding key。binding key 依赖于Exchange Type,当routing key匹配到对应的Exchange Type下的binding key时,消息则会被路由到对应的Queue中。

11.Exchange Type

RabbitMQ常用的Exchange Type有fanout、direct、topic、headers这四种,head一般不用,在此不做介绍
a)fanout:所有发送到某个Exchange上的消息,都会被路由到绑定了这个Exchange的Queue中
b)direct:发送到某个Exchange上的消息,会被路由到binding key与routing key完全匹配的Queue中
c)topic:和direct类似,但是支持通配符‘*’与‘#’,其中‘*’支持匹配‘.’后面一个单词,比如:test.* 可以匹配test.a,test.b,test.ab;‘#’可以匹配‘.’后面多个单词(可以是零个),比如:test.#可以匹配test.a,test.b,test.a.b

四、RabbitMQ的整体架构

RabbitMQ的整体架构

五、RabbitMQ的消息流转

RabbitMQ的消息流转

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值