Rabbitmq

概念:根据amqp协议实现的消息队列。
什么是amqp: (简单了解)定义了应用层消息队列的结构和消息投递的规则的一种协议。

做什么应用场景
1、消息队列,应用的解耦。加速接口的响应。
2、还有削峰(比如当数据量非常大的时候,可以先暂存进消息队列)
3、延迟队列(比如过期订单,多长时间之后进行取消,所有可以用到延迟的地方)。

是什么之
组成部分
broker: 相当于一个mq的实例。
exchange:交换机,负责消息转发到queue.
queue:存储消息,进行消费。
route key:用于判断投入到哪个queue.

消息投递流程
生产者-broke里-exchange-queue-消费者

如何保证消息的可靠性:
1、消息投递的可靠性
失败的情况有
1)、消息不能到exchange,设置异步confirm进行确认。失败的话做逻辑进行重发。
2)、消息不能到达queue。设置return回调进行确认,同上。

2、消息消费的可靠性
1)、需要设置ack确认。有ack,nack,reject三种模式。
ack的模式一般选择手动确认,因为默认是只要投递了消息,就算正常消费。
如果是自动确认模式,那么可以开启重试机制。达到一定的次数,自动丢弃或者写入持久化文件(数据库)进行人工干预。
如果是手动确认,那么重试机制会失效。需要自己实现重试,redis或者其他方式。

3、注意:
1、消息无线投递,消费失败的情况的处理,避免无限循环。因为失败重新入队列,一般如果是代码问题,会导致重复入队列。这个时候直接丢弃,会进入死信队列。
2、消息重复消费:为什么会重复消费,mq并没有做重复消费的举动,需要我们自己实现。比如因为网络问题,queue向消费者多次发送(一般不会)。
解决办法:设置信息id的唯一性,保存起来,每次消费完之后保存对应的状态,下次消费的时候判断是否消费过。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值