消息中间件
2021-06-27 10:18:33 0 举报
AI智能生成
mq 复习
作者其他创作
大纲/内容
为什么要引入消息中间件
系统解耦
异步调用
流量削峰
引入消息中间件的坏处
系统可用性降低
系统稳定性降低
分布式一致性的问题
如何保证消息的可靠性传输
RabbitMQ消息丢失及解决方案
生产者
方案1:开启RabbitMQ事务(同步,不推荐)
方案2:开启comfirm模式(异步,推荐)
消息队列
方案:开启持久化
消费者
方案:关闭MQ自动ack
Kafka消息丢失及解决方案
生产者
方案:设置acks=all
队列
给topic设置参数replication.factor>1
kafka服务端设置:min.insync.replicas>1
product端设置:acks=all
消费者
关闭自动提交offset
RocketMQ消息丢失及解决方案
生产者
同步发送:producer.send
发送消息如果失败或者超时则进行重试
多master节点
队列
同步刷盘策略
提供主从模式,同时主从支持同步双写
消费者
At least Once:先消费,消费成功后提交
消费重试机制
如何保证消息不被重复消费
比如你拿这个消息是要写库的,你先根据主键查一下,如果你这数据都有了,就别插入了,update一下就可以了
比如你是写redis的,那好办,反正每次都是set,天然的幂等性
比如都不是上面两个场景,那做的稍微复杂一点,需要让生产者在消息里面加一个全局唯一的ID,类似于订单id的东西
0 条评论
下一页