活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
查看全部活动
热门活动
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 一键部署Llama3大模型学习机 0代码一键部署,预装最新主流大模型Llama3与StableDiffusion
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
    • 关系数据库SQL Server版
    • 企业主机安全
    • 云防火墙
    • CDN加速
    • 物理机
    • GPU云主机
    • 天翼云电脑(政企版)
    • 天翼云电脑(公众版)
    • 云主机备份
    • 弹性云主机
      搜索发现
      关系数据库SQL Server版企业主机安全云防火墙CDN加速物理机GPU云主机天翼云电脑(政企版)天翼云电脑(公众版)云主机备份弹性云主机
    • 文档
    • 控制中心
    • 备案
    • 管理中心
    • 登录
    • 免费注册

    RocketMq,RabbitMq比对使用

    首页 知识中心 其他 文章详情页

    RocketMq,RabbitMq比对使用

    2023-06-08 06:18:44 阅读次数:417

    rabbitmq,队列

    首先整理这个文章是因为我正好有机会实战了一下rocketmq,阿里巴巴的一个开源消息中间件。所以就与以往中rabbitmq进行小小的比较一下。这里主线的根据常见面试问题进行整理。

    1.消息队列常用的场景

    1.1.削峰

    例如我们做得考试系统中,用户通过人脸识别登录系统,考虑到考试系统的特殊性,三万名考生参加考试,需要记录人脸识别登录照片。从考试完结果上看,用户最大并发数在4000,于是我们采用rocketMq来进行异步消费用户人脸识别图片,当时统计rocketMq每秒1000消费消息。及时反馈了考生人脸识别登录成功,对数据库写操作也起到很大的缓冲功能。

    1.2.解耦

    如常用ABCD系统中,BCD系统都需要从A系统中调用接口返回数据,这时候突然来了E系统,也需要A系统数,又或者C系统不想要用这个接口数据了,而且A系统还得考虑,如果BCD接收不到数据,接收失败咋整之类的问题。

    如果基于消息队列,这些问题就迎刃而解了。

    A系统直接把数据扔到Mq中,BCDE系统直接从Mq中消费,如果消费失败,则重试消费。

    1.3.异步

    比如下订单系统中,会调用库存系统,会调用仓库系统,积分系统等,用户订单操作会直接返回给用户信息,提示订单完成,至于库存减少,或者仓库发货又或者积分的增加等,都是异步完成。极大的提高用户响应速度。

    2.各种消息队列优缺点

    1.1.rabbitMq

    rabbitMq 几万级数据量,基于erlang语言开发,因此响应速度快些,并且社区活跃度比较活跃,可视化界面。缺点就是数据吞吐量相对与小一些,并且是基于erlang语言开发,比较重的问题难以维护。

    1.2.rocketMq

    rocketMq几十万级别数据量,基于Java开发,应对了淘宝双十一考验,并且文档十分的完善,拥有一些其他消息队列不具备的高级特性,如定时推送,其他消息队列是延迟推送,如rabbitMq通过设置expire字段设置延迟推送时间。又比如rocketmq实现分布式事务,比较可靠的。

    1.3.kafka

    kafka真正的大规模分布式消息队列,提供的核心功能比较少。基于zookeeper实现的分布式消息订阅。

    3.消息队列常使用的注意事项或者面试时候经常问道的功能点

    3.1.如何保证系统的高可用

    就rabbitMq而言,有镜像模式概念,就是用户在发送数据时候,发送到mq机器上,并且持久化磁盘,然后通过设置镜像的queue,把数的持久化地址对应表同步到另外mq机器上。这种就有效防止一台mq挂了以后,另外的mq可以直接对外提供消费功能。

    就rocketMq而言,分为多主集群结构,多主多备异步复制结构,多主多备同步复制结构。

    3.2.如何保证消息不会丢失

    就rabbitmq而言,从生产者,消费者,消息队列角度分析。生产者而言,发送消息如果失败,则定义重试次数,一般设置成五次。两种解决方式1.通过设置事务,进行事务回滚重试。2.通过发送者确认模式开启。

    方式一:channel.waitForConfirms()普通发送方确认模式;

      方式二:channel.waitForConfirmsOrDie()批量确认模式;

      方式三:channel.addConfirmListener()异步监听发送方确认模式;

        // ======== 批量确认模式 end ======
        // 发送消息
        while(num-- > 0) {
            // 发送一个持久化消息到特定的交换机
            channel.basicPublish(EXCHANGE_NAME, routingkey, MessageProperties,PERSISTENT_TEXT_PLAIN, message.getBates());
            System.out.println(" [SimpleConfirmSend] Sent " + message);
        }
        // 批量等待确认: 返回true: 如果所有的消息都收到有确认应答,没有消息被拒绝
        if(!channel.waitForConfirms()){
            System.out.println("Not all message have arrived broker" );
            // 实际应用中,需要在这是添加发送消息失败的处理逻辑: 如重发等等
            // 在这种的模式中,如果发送N条消息,如果有一条失败,则所有的消息都需要重新推送
        }

    就mq本身而言,需要做队列的持久化到磁盘的操作。1.queque队列的持久化,通过channel.queue_declare(queue='hello', durable=True);设置

    3.3.设置消息的持久化,通过delivery_mode=2来进行设置。

    mq消费者而言,开启手动ACK模式,也就是需要真正的消费者入库成功,才会进行消费成功的确认。

    总结就是一句话:发送者确认模式开启,消息持久化默认开启,消费者消费开启手动ack

    rocketMq而言,生产者发送消息,生产者默认模式

    RocketMq,RabbitMq比对使用

      rocketMq持久化方式中,消息持久化通过如下配置。

    #Broker 的角色
    #- ASYNC MASTER 异步复制Master
    #- SYNC MASTER 同步双写Master
    #- SLAVE
    brokerRole=ASYNC MASTER
    #刷盘方式
    #- ASYNC ELUSH 异步刷盘
    #- SYNC ELUSH 同步刷盘
    flushDiskType=ASYNC FLUSH
    #checkTransactionMessageEnable=false#发消息线程池数量
    #sendMessageThreadPoolNums=12 8
    #拉消息线程池数量
    #pul1MessageThreadPoolNums=128

    3.4.消费者幂等消费问题

    感觉rabbitmq和rocketmq出现重复消费场景差不多

    3.4.1.发送时消息重复

    当一条消息已被成功发送到服务端并完成持久化,此时出现了网络闪断或者客户端宕机,导致服务端对客户端应答失败。 如果此时生产者意识到消息发送失败并尝试再次发送消息,消费者后续会收到两条内容相同并且 Message ID 也相同的消息。

    3.4.2.投递时消息重复

    消息消费的场景下,消息已投递到消费者并完成业务处理,当客户端给服务端反馈应答的时候网络闪断。 为了保证消息至少被消费一次,消息队列 RocketMQ 的服务端将在网络恢复后再次尝试投递之前已被处理过的消息,消费者后续会收到两条内容相同并且 Message ID 也相同的消息。

    3.4.3.负载均衡时消息重复(包括但不限于网络抖动、Broker 重启以及订阅方应用重启)

    当消息队列 RocketMQ 的 Broker 或客户端重启、扩容或缩容时,会触发 Rebalance,此时消费者可能会收到重复消息。

    解决方式的话,通过messageId,作为数据库业务主键,重复插入会报错主键冲突问题。

    或者通过redis唯一性,messageId作为key存入,去重重复的数据,在从redis中刷到数据库里面。

    版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://blog.csdn.net/qq_37284798/article/details/129241384,作者:吴名氏.,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。

    上一篇:gitlab备份在其他主机上做恢复

    下一篇:linux 文件与目录管理

    相关文章

    2025-05-16 09:15:17

    BFS解决拓扑排序(1)_课程表

    BFS解决拓扑排序(1)_课程表

    2025-05-16 09:15:17
    lt , 课程 , 队列
    2025-05-16 09:15:17

    Linux系统基础-多线程超详细讲解(5)_单例模式与线程池

    Linux系统基础-多线程超详细讲解(5)_单例模式与线程池

    2025-05-16 09:15:17
    单例 , 线程 , 队列
    2025-05-14 10:03:13

    数据结构-队列

    队列是仅限在一端进行插入,另一端进行删除的线性表。

    2025-05-14 10:03:13
    元素 , 入队 , 出队 , 链表 , 队列
    2025-05-14 10:03:13

    AJAX-事件循环(超详细过程)

    JS有一个基于事件循环的并发模型,事件循环负责执行代码、收集和处理事件以及执行队列中的子任务。

    2025-05-14 10:03:13
    代码 , 任务 , 出栈 , 异步 , 执行 , 调用 , 队列
    2025-05-14 09:51:15

    java怎么对线程池做监控

    对Java线程池进行监控是确保系统性能和稳定性的重要部分。监控线程池可以帮助我们了解线程池的状态,如当前活跃线程数、任务队列长度、已完成任务数等。

    2025-05-14 09:51:15
    Java , 方法 , 监控 , 示例 , 线程 , 队列
    2025-05-08 09:04:49

    DS初阶:链式结构实现队列

    队列:是只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out)的特点。

    2025-05-08 09:04:49
    NULL , size , 单链 , 指针 , 队列
    2025-05-08 09:04:49

    DS初阶:栈和队列的相互实现

    栈和队列的相互实现是用两个栈去实现队列或者是用两个队列去实现栈

    2025-05-08 09:04:49
    为空 , 代码 , 元素 , 初始化 , 实现 , 获取 , 队列
    2025-05-08 09:04:49

    DS初阶:循环队列的实现

    DS初阶:循环队列的实现

    2025-05-08 09:04:49
    rear , 元素 , 循环 , 指针 , 数组 , 返回 , 队列
    2025-05-08 09:03:07

    数据结构知识点

    数据结构知识点

    2025-05-08 09:03:07
    元素 , 结点 , 节点 , 链表 , 队列
    2025-05-07 09:08:54

    springboot系列教程(二十三):springboot整合整合Redis哨兵,实现消息队列场景

    springboot系列教程(二十三):springboot整合整合Redis哨兵,实现消息队列场景

    2025-05-07 09:08:54
    Redis , 场景 , 接口 , 消息 , 队列
    查看更多
    推荐标签

    作者介绍

    天翼云小翼
    天翼云用户

    文章

    33564

    阅读量

    5022482

    查看更多

    最新文章

    BFS解决拓扑排序(1)_课程表

    2025-05-16 09:15:17

    DS初阶:链式结构实现队列

    2025-05-08 09:04:49

    【Linux】systemV消息队列和信号量

    2025-04-15 09:19:05

    RabbitMQ python演示 publish subscribe

    2025-04-09 09:16:07

    【CPP】优先级队列

    2025-03-10 09:52:54

    【practise】栈的压入和弹出序列

    2025-03-10 09:52:54

    查看更多

    热门文章

    python使用pika库调用rabbitmq的交换机模式

    2024-09-24 06:30:51

    k8s安装rabbitmq,yaml如何写?

    2023-06-13 08:36:00

    k8s安装phpmyadmin,yaml如何写?

    2023-05-30 08:04:45

    python使用pika库调用rabbitmq的参数使用

    2023-06-01 06:35:26

    RabbitMQ:refused for user接收失败解决方案

    2023-06-15 06:23:44

    【RocketMQ入门到精通】— RocketMQ初级特性能力 | Message Order,RocketMQ的消息可以是有序的哦

    2023-07-04 07:00:45

    查看更多

    热门标签

    linux java python javascript 数组 前端 docker Linux vue 函数 shell git 节点 容器 示例
    查看更多

    相关产品

    弹性云主机

    随时自助获取、弹性伸缩的云服务器资源

    天翼云电脑(公众版)

    便捷、安全、高效的云电脑服务

    对象存储

    高品质、低成本的云上存储服务

    云硬盘

    为云上计算资源提供持久性块存储

    查看更多

    随机文章

    【RDMA】技术详解(二):Send Receive操作

    RabbitMQ系列(一)--------简介

    RabbitMQ-广播模式

    初步认识栈和队列

    【Qos】QoS原理

    浅谈RabbitMq的工作模式

    • 7*24小时售后
    • 无忧退款
    • 免费备案
    • 专家服务
    售前咨询热线
    400-810-9889转1
    关注天翼云
    • 权益商城
    • 天翼云APP
    • 天翼云微信公众号
    服务与支持
    • 备案中心
    • 售前咨询
    • 智能客服
    • 自助服务
    • 工单管理
    • 客户公告
    • 涉诈举报
    账户管理
    • 管理中心
    • 订单管理
    • 余额管理
    • 发票管理
    • 充值汇款
    • 续费管理
    快速入口
    • 权益商城
    • 文档中心
    • 最新活动
    • 免费试用
    • 信任中心
    • 天翼云学堂
    云网生态
    • 甄选商城
    • 渠道合作
    • 云市场合作
    了解天翼云
    • 关于天翼云
    • 天翼云APP
    • 服务案例
    • 新闻资讯
    • 联系我们
    热门产品
    • 云电脑
    • 弹性云主机
    • 云电脑政企版
    • 天翼云手机
    • 云数据库
    • 对象存储
    • 云硬盘
    • Web应用防火墙
    • 服务器安全卫士
    • CDN加速
    热门推荐
    • 云服务备份
    • 边缘安全加速平台
    • 全站加速
    • 安全加速
    • 云服务器
    • 云主机
    • 智能边缘云
    • 应用编排服务
    • 微服务引擎
    • 共享流量包
    更多推荐
    • web应用防火墙
    • 密钥管理
    • 等保咨询
    • 安全专区
    • 应用运维管理
    • 云日志服务
    • 文档数据库服务
    • 云搜索服务
    • 数据湖探索
    • 数据仓库服务
    友情链接
    • 中国电信集团
    • 189邮箱
    • 天翼企业云盘
    • 天翼云盘
    ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
    公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
    • 用户协议
    • 隐私政策
    • 个人信息保护
    • 法律声明
    备案 京公网安备11010802043424号 京ICP备 2021034386号