RabbitMQ基础

RabbitMQ
1.简介:

RabbitMQ是一个实现了AMQP协议(Advanced Message Queue Protocol)的消息队列。

2.作用:
  • 流量削峰
    当我们在秒杀特价商品时,系统在一小段时间内突然收到大量的订单,如果将这么多订单请求写入数据库的话,数据库的负荷会非常之大,然而我们的数据库层也是最脆弱的,但是有了消息队列后,我们可以先将订单请求写入消息队列中,消息队列是位于我们程序和数据库之间的中间件,待订单请求入队后,在根据队列的先进先出特性,依次写入数据库,所以消息队列在本质上起到的作用就是削峰填谷,为业务保驾护航。

  • 降低系统耦合度
    消息队列的主要特点是异步处理,主要目的是减少请求响应时间和解耦。所以主要的使用场景就是将比较耗时而且不需要即时(同步)返回结果的操作作为消息放入消息队列。同时由于使用了消息队列,只要保证消息格式不变,消息的发送方和接收方并不需要彼此联系,也不需要受对方的影响,即解耦合

  • 提高系统吞吐量,性能

rabbitMQ的应用场景:

1.异步处理在这里插入图片描述
2.应用解耦:
在这里插入图片描述

3.流量削峰
在这里插入图片描述

3.概念

在这里插入图片描述

  • 生产者
    创建消息,然后发送到代理服务器(RabbitMQ)的程序
  • 交换机
    交换机是生产者和队列之间的中间件,消息经生产者发送到达交换机,交换机根据指定的路由规则分发给相应队列
  • 路由键
    分发规则
  • 队列
    存放消息的地方
  • 消费者
    连接到代理服务器(RabbitMQ),并订阅到队列上接收消息
4.工作模式:
  • 1.direct
    direct是rabbitMQ默认的工作模式,即Direct Exchange 是 RabbitMQ 默认的 Exchange,完全根据路由键来路由消息,只有完全匹配时,该消息才会路由到指定队列。

在这里插入图片描述

  • 2.fanout
    该模式下会忽略路由键规则,直接将消息广播到该交换机绑定的所有队列,用于全体消息订阅服务
    在这里插入图片描述
  • 3.topic
    该模式和direct模式相似,但是该模式路由键是模糊匹配,分别支持*和#通配符,*表示匹配一个单词,#则表示匹配没有或者多个单词。
    在这里插入图片描述
  • 4.header
    Headers Exchange 会忽略 RoutingKey 而根据消息中的 Headers 和创建绑定关系时指定的 Arguments 来匹配决定路由到哪些 Queue。Headers Exchange 的性能比较差,而且 Direct Exchange 完全可以代替它,所以不建议使用。
5.工作流程:

单个队列:
在这里插入图片描述
多个队列:
多个队列情况下会比较消息的路由键,按照相应规则分发到相应队列中,
在这里插入图片描述
routing key命名规则:用"."分割的字母或数字
匹配规则:
*:匹配单个字母或数字
#:匹配0~多个字母或数字

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值