• RabbitMQ如何保证顺序性


    1. RabbitMQ消息顺序性说明

    顺序性: 消息的顺序性是指消费者消费到消息和发送者发布的消息的顺序是一致的
    举个例子,不考虑消息重复的情况下,如果生产者发布的消息分别为msg1、msg2、msg3 那么消费者必然也是按照 msg1、msg2、msg3 的顺序来消费的
    目前很多资料显示RabbitMQ消息能够保障顺序性,这是不在正确的,或者说这个观点有很大局限性。在不使用任何Rabbitmq 的高级特性,也没有消息丢失、网络故障之类异常的情况下发生,并且只有一个消费者的情况下,也只有一个生产者的情况下可以保证消息的顺序性。如果有多少生产者同时发送消息,无法确定消息到达Broker的前后顺序,也就无法验证消息的顺序性,因为每一次消息的发送都是在各自的线程中进行的

    2. RabbitMQ消息顺序错乱演示

    生产者发送消息:
    1 不使用生产者确定机制,单生产者单消费者可以保证消息的顺序性

    在

    2 使用了生产者确认机制,那么就无法保证消息到过Broker的前后顺序,因为消息的发送是异步发送的,每一个线程的执行时间不同

    在这里插入图片描述

    3 生产端使用事务机制,保证消息的顺序性

    在这里插入图片描述

    消费端消费消息:
    1 单消费者可以保证消息的顺序性
    2 多消费者不难保证消息的顺序,因为每一个消息的消费都是在各自的线程中进行,每一个线程的执行时间不同

    3.RabbitMQ消息顺序性保障

    生产端启动事务机制,单生产者单消费者。如果我们不考虑消息到达MQ的顺序。只是考虑对已经到达MQ的消息顺序消费,那么需要保证消费者是单消费者即可

    4.重复消费解决方案

    在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    JAVA线程池详解
    AWS DAS认证考点整理(Athena&Glue篇)
    linux后台运行java项目/ jar包:nohup 命令
    openGauss运维操作命令及其相关介绍
    Java-泛型
    unity 桌面程序
    SQL:sql连接那些事儿
    python实现Map+函数式接口替换多级if-else结构
    2022-08-26
    中间件安全(概述)有中间件的各类链接和官网信息和漏洞库以及配置问题和开源工具
  • 原文地址:https://blog.csdn.net/qq_37653556/article/details/130795217