消息队列总述

一、为什么要用消息队列
解耦、削峰、异步

二、使用消息队列会带来什么问题
1、系统的可用性降低。消息队列一旦崩溃,所有相关业务都无法运行。因此必须保证消息队列的高可用;
2、系统的复杂性降低。引入消息队列之后需要考虑消息的可靠传输问题、消息的重复消费问题、数据的一致性问题等;

三、如何保证消息队列的高可用
构建集群(主从模式、ZooKeeper)

四、如何保证消息不被重复消费
1、消息被消费完成后需要有确认机制
2、在不同业务场景中设计方法避免重复消息
    (1)拿到消息做数据库insert操作时,给消息做唯一的主键,若是重复消息会造成主键冲突,避免了脏数据;
    (2)使用redis中的set来存储消息数据;

五、如何保证消息的可靠传输
1、生产者弄丢数据
    (1)使用事务
    (2)confirm模式
2、消息队列弄丢数据
    持久化
3、消费者弄丢数据
    手动确认消息

全部评论

相关推荐

野猪不是猪🐗:可以考虑加个业务项目来体现你的技术浅度,我有个70字的业务项目话术可以狠狠速成一个低质量业务项目,不需要的可以交流。
点赞 评论 收藏
分享
02-14 15:34
门头沟学院 Java
Java抽象带篮子:专业技能怎么写可以看看我发的帖子
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务