MQ相关问题

2023-11-03

ActiveMQ 功能完善,性能相对差,社区文档很久不更新了,丢失可能低 万级QBS,毫秒延迟,主从高可用
RabbitMQ 基于erlang,扩展性差,社区活跃(中小企业用) 万级QBS,微妙延迟,主从高可用
RocketMQ 阿里开源,定制开发,社区相对活跃,参数化配置可做到0丢失,接口简单(非jms) 10w级QBS,毫秒延迟,分布式
Kafka 大数据类的系统做实时计算或者日志采集,功能较少(核心) 10w级QBS,毫秒延迟,分布式

苏宁 WindQ (HornetQ 的定制版) 在linux平台上直接调用操作系统的AIO

作用:
1,消峰(发送消息,慢慢处理请求)
2,异步(异步调用系统)
3,解耦(下发数据,其他系统选择性,消费)

问题:
1.增加系统复杂度和维护成本
2.消息重复消费(幂等性)
消息重复消费的主要原因在于回馈机制(RabbitMQ是ack,Kafka是offset)
消费者消费完消息后回复ack, 但是刚消费完还没来得及提交系统就重启了,这时候上来就pull消息的时候由于没有提交ack或者offset,消费的还是上条消息。
解决:
1.数据库唯一约束
2.redis 存记录标志,处理过就忽略
消息发送者发送消息时携带一个全局唯一的消息id
消费者获取消费后先根据id在redis/db中查询是否存在消费记录
如果没有消费过就正常消费,消费完毕后写入redis/db
如果消息消费过就直接舍弃

3.消息丢失(可靠性)
1).生产者丢失:发送消息的时候半途丢了,开启MQ事务机制,吞吐量下降,设置合理的重试次数
代码中增加消息表,定期扫描表,重试发送
发送给消息也要有生产者确认机制
2).MQ丢失:开启MQ的持久化
3).消费者丢失:收到消息没来得及消费宕机了,ack机制,自动确认消息改为手动确认
手动ack还有个问题,业务处理过了,断了,没有ack,这个时候就要设计业务代码为幂等性,防止重复处理

4.如何保证消息顺序性
在这里插入图片描述

5.如何处理消息积压

消费者宕机
消费能力不足
发送者流量太大

1)临时紧急扩容

在这里插入图片描述

2)如果允许,则丢弃消息

https://blog.csdn.net/qq_43298198/article/details/106019759?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-0&spm=1001.2101.3001.4242

rabbitmq 延时队列
第一种
在这里插入图片描述

第二种 topic
在这里插入图片描述

在java代码中MyMqConfig中创建2个队列,2个绑定和1个交换机,@Bean注入

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

真正的解锁库存业务

在这里插入图片描述

在这里插入图片描述

@EnableRabbit
加配置文件
加自定义配置

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MQ相关问题 的相关文章

  • 如何在 Node js 中保持分叉的子进程处于活动状态

    我想创建一个像带有node的foreverjs一样运行的rabbitmq cli 它可以生成 child process 并使其在后台运行 并且可以随时与 child process 进行通信 我面临的问题是 当主 cli 程序退出时 ch
  • 使用Camel的spring-rabbitmq组件时如何自动声明交换?

    我正在尝试从 Camel 3 x 迁移到 Camel 4 x 版本 因此我需要从rabbitmq替换组件spring rabbitmq With rabbitmq我正在使用的组件declare https camel apache org
  • Spring AMQP + RabbitMQ 3.3.5 ACCESS_REFUSED - 使用身份验证机制 PLAIN 拒绝登录

    我遇到以下异常 org springframework amqp AmqpAuthenticationException com rabbitmq client AuthenticationFailureException ACCESS R
  • 何时使用 RabbitMQ 铲子以及何时使用 Federation 插件?

    对于我工作的公司 我们希望使用 RabbitMQ 作为我们的主要消息总线 我们的想法是 每个应用程序都使用自己的虚拟主机进行内部通信 并且通过 shovel 或联合插件 我们可以在多个虚拟主机 甚至可能是多台机器 非集群 之间共享某些类型的
  • 如何在多租户系统中的 RabbitMQ 中使队列私有/安全?

    我已阅读开始使用 http www rabbitmq com getstarted htmlRabbitMQ 提供的指南 甚至还贡献了第六个示例暴风雨 amqp https github com paolo losi stormed amq
  • 定义具有多种消息类型的消息传递域

    到目前为止 我见过的大多数 F 消息传递示例都使用 2 4 种消息类型 并且能够利用模式匹配将每条消息定向到其正确的处理函数 对于我的应用程序 由于处理和所需参数的不同性质 我需要数百种独特的消息类型 到目前为止 每个消息类型都是其自己的记
  • 在 Celery 工作线程中捕获 Heroku SIGTERM 以优雅地关闭工作线程

    我对此进行了大量研究 令我惊讶的是我还没有在任何地方找到一个好的答案 我正在 Heroku 上运行一个大型应用程序 并且我有某些运行很长时间处理的 celery 任务 并在任务结束时保存结果 每次我在 Heroku 上重新部署时 它都会发送
  • 如何重置rabbitmq管理用户

    使用rabbitmq 我们可以安装管理插件 然后我们通过浏览器访问http localhost 55672 使用访客 访客 问题是 我无法再登录 因为我更改了密码并为角色输入了空白 有没有办法重置rabbitmq管理的用户 您可以通过以下方
  • Amazon EC2 实例上和本地的 RabbitMQ?

    是否可以设置一个RabbitMQ服务器上的Amazon EC2 instance 并将我办公室的机器连接到此RabbitMQ服务器并向其发送 接收消息 我会被收取费用吗Amazon对于流入 流出我的带宽 消息RabbitMQ EC2 ins
  • RabbitMQ - 无法联系统计数据库。消息速率和队列长度将不会显示

    我已经设置了一个兔子经纪人集群 并且在管理门户插件中我收到以下消息 无法联系统计数据库 消息速率和队列长度将不会显示 我已经搜索过这个错误 但谷歌并不友善 任何人都可以阐明这一点吗 我最近在旧安装的RabbitMQ 2 8 7 上遇到了同样
  • 从 Java/Spring 检索 RabbitMQ 队列中未确认消息的数量

    有没有办法返回未确认的消息数 我正在使用此代码来获取队列中的消息数 DeclareOk declareOk amqpAdmin getRabbitTemplate execute new ChannelCallback
  • 从 RabbitMQ 迁移到 Amazon SQS [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们的初创公司目前正在使用RabbitMQ with Python Django 对于消息队列 现在我们计划转移到Amazon SQS其高可用性
  • 确认 RabbitMQ 消息是否有超时?

    我想设置一个超时时间 超过该超时时间后 出队的消息将自动被 NACK 拒绝 当我将消息出队时 我会等待消息通过套接字传输并且另一方确认其接收 我是否需要保留计时器列表 或者 RMQ 可以自动处理这个列表吗 private void Run
  • RabbitMQ 中 Pub/Sub 与工作队列的混合

    我正在评估使用 RabbitMQ 作为消息队列 消息总线 并一直在查看示例教程 https www rabbitmq com getstarted html在 RabbitMQ 页面上 我正在寻找教程中未涵盖的特定场景 并且我不确定是否以及
  • 启动时加载 RabbitMQ 配置

    如何在启动时加载 RabbitMQ 配置以确认已创建代理对象 队列 交换 绑定 用户 虚拟主机 权限和参数 根据 RabbitMQ 文档 可以通过以下方式完成load definitions http www rabbitmq com ma
  • 使用 Spring Boot 的多个 Rabbitmq 队列

    来自 Spring Boot 教程 https spring io guides gs messaging rabbitmq https spring io guides gs messaging rabbitmq 他们给出了创建 1 个队
  • RabbitMQ + Windows + LDAP 无需发送密码

    我正在尝试在 Windows 7 上使用 RabbitMQ 3 6 2 进行 LDAP 身份验证 授权 我已经在应用程序发送用户名 密码的情况下进行了基本身份验证 但密码位于我需要弄清楚如何进行的代码中避免 有没有人在不提供密码的情况下成功
  • 如何停止rabbitmq服务器

    我正在尝试启动一个节点应用程序 但我认为rabbitmq 妨碍了我 与此线程类似 名为 rabbit 的节点已经在运行 但也 无法连接到节点 rabbit https stackoverflow com questions 8737754
  • EasyNetQ 模型关闭

    我使用 EasyNetQ 实现了一个简单的 RabbitMQ 客户端 连接后 我收到一条通知 队列模型关闭 这是我的代码 var bus RabbitHutch CreateBus String Format host 0 hostName
  • 具有延迟的简单可扩展工作/消息队列

    我需要设置一个作业 消息队列 并可以选择为任务设置延迟 以便空闲工作人员不会立即拾取它 而是在一定时间后 可能因任务而异 我研究了几个 Linux 队列解决方案 rabbitmq gearman memcacheq 但它们似乎都没有提供开箱

随机推荐

  • 安装mongoDB出现服务启动失败--服务没有响应控制功能--Status:Service ‘MongoDB Server (MongoDB)‘ (MongoDB) failed tostart.

    下载了4 4 20版本的MongoDB mongodb windows x86 64 4 4 20 signed msi 在安装完成后 参考 61条消息 window 下安装 mongodb 详细步骤 window安装mongodb 极客飞
  • 2022.05面试总结

    前言 今年四月份正在办公室高高兴兴的写bug 突然就被通知毕业了 传说中的天选打工人 于是开始了五月份找工作的苦逼生活 总体上来说市场比较冷淡 前后面试了20多家 只拿到了4个offer 整体涨幅在30 左右 话说回来自从2020年之后 疫
  • Verilog的结构化、数据流、行为级描述方式

    Verilog的结构化 数据流 行为级描述方式 概述 verilog通常可以使用三种不同的方式描述模块实现的逻辑功能 结构化 数据流 行为描述方式 结构化描述方式 是使用实例化低层次模块的方法 即调用其他已经定义过的低层次模块对整个电路的功
  • 为什么采用PID算法?增量式PID定位方式参数如何整定?

    PID控制能满足相当多的工业对象的控制要求 尤其适用于可建立精确模型的确定性控制系统 由于其算法简单 鲁棒性强和可靠性高适合多数控制系统中 可以结合采用自适应 模糊 滑模 神经网络等智能控制以增强控制性能和适应环境的能力 首先从理论原则出发
  • MFC 如何改变对话框的默认背景颜色

    下面介绍三种方法 实现改变对话框的默认背景颜色 1 可以在CLotteryApp InitInstance 设置更新对话框的背景颜色 调用SetDialogBkColor RGB 160 32 240 即可以改变背景颜色 注意这里绘制的颜色
  • chrome 控制台 base64加密解密

    1 视界 2 背景 因为在客户机器 要查询base64的解密信息 但是因为内网无法使用网络 只能拷贝软件本想查询插件 后来发现谷歌支持解密 3 方法 在chrome控制台上可以直接使用函数做base64加密解密 用法 加密 btoa ord
  • plt.pie()参数解释

    label 设置各部分标签 explode 设置某一块离开中心距离 autopct 设置圆里面的文本 shadow 设置是否有阴影 labeldistance 设置标签文本距圆心位置 数字表示多少倍半径 startangle 起始角度 默认
  • 性能小课堂:Jmeter录制手机app脚本

    环境准备 1 手机 2 wifi 3 Jmeter 具体步骤 1 启动Jmeter 2 测试计划 中添加 线程组 3 工作台 中添加 HTTP代理服务器 4 配置代理服务器 Global Settings下面的端口配置 9988 HTTPS
  • 抖音企业号无需API开发连接AI图像生成,打造AI智能绘图助手

    1 抖音用户使用场景 作为抖音企业号的运营人员 我们一直在寻找新的方式来增强我们与用户之间的互动 最近 我们发现了AI绘图技术可以根据用户需求和指令自动创建图片 无需人为干预 这为我们节省了人力和时间 因此 我们考虑将AI绘图模型接入到抖音
  • Waves 14 Complete对Mac和Windows系统的最低要求

    Waves 14 Complete是一款功能齐全的音频编辑软件 适用于音乐制作 音频工程和声音设计等领域 它提供了一系列强大的工具和效果 帮助用户在音频处理过程中实现专业水平的效果和混音 Waves 14 Complete包含了多个实用的插
  • Qt窗体边框阴影的绘制

    setWindowFlags Qt FramelessWindowHint Qt WindowSystemMenuHint setAttribute Qt WA TranslucentBackground setMouseTracking
  • Python与Xpath--二手房房价数据爬取

    一 写在开头 本文在 城市感知计算 代码的基础上进行了修改和调整以更符合自己的需求和习惯 在此感谢作者的分享 其次我想说的是如果有同志看见了我的文章并且想要尝试实现的话 希望能 合理 温柔 地爬取数据 给网站减少访问压力 他好我也好 最好是
  • C++设计模式---命令模式

    文章目录 命令模式的场景 命令模式的定义 命令模式的场景 现在需要设计这样的场景 厨师类负责做菜 比如红烧鱼 锅包肉等菜 而顾客一般不能直接命令厨师做哪些菜 而是需要写一个便签 写上需要做哪些菜 然后交给厨师来做 include
  • 词法分析器的生成器——lex/flex

    文章目录 1 词法分析器和语法分析器 2 flex 1 使用 2 文件格式 3 条件模式 了解 1 词法分析器和语法分析器 词法分析器 将文本分解成token 语法分析器 判断token是否符合规定的语法规则 可以自己实现词法 语法分析器
  • 【2023】华为OD机试真题Java CC++ Python JS Go-题目0259-字符串划分

    题目0259 字符串划分 题目描述 给定一个小写字母组成的字符串 s s s 请找出字符串中两个不同位置的字符作为分割点 使得字符串分成的三个连续子串且子串权重相等 注意子串不包含分割点 若能找到满足条件的两个分割点 请输出这两个分割点在字
  • 输入序列号_2021微信红包封面序列号领取大全最新(附获得方式)

    感谢大家的阅读 喜欢小编为你精心编辑的文章吗 欢迎留言评论 小编都会虚心接受的 你们是小编前进的动力哦 每天一点点进步 分享彼此的欢乐 如果喜欢就关注订阅吧 也不要忘记点在看哦 亲 微信红包封面图是在节日中大家都需要的一个工具 现在有了越来
  • 《兴森大求真》重磅来袭!先进电子电路可靠性大揭秘

    兴森实验室 让可靠看得见 前言介绍 芯片性能不断增强 先进封装不断演进 导致封装基板信号互连的IO数量和密度不断增加 PCB的层数增加 孔间距减小 厚径比提升 可靠性的挑战正在加剧 电路板作为各种电子元器件的载体和电路信号传输的枢纽 决定了
  • 带小手的文档怎么复制

    如果我们需要在网上复制想要的内容 很多专业的学术文章是不能直接复制的 请慢慢往下看 一 普通需要会员的文档 我们可以通过f12开发者工具复制 如 这是一种常见的复制文档方式 但是需要一句一句的复制 二 通过网络爬虫 不过需要有较强的编程能力
  • windows关闭端口方法

    在介绍各种端口的作用前 这里先介绍一下在Windows中如何关闭 打开端口 因为默认的情况下 有很多不安全的或没有什么用的端口是开启的 比如Telnet服务的23端口 FTP服务的21端口 SMTP服务的25端口 RPC服务的135端口等等
  • MQ相关问题

    ActiveMQ 功能完善 性能相对差 社区文档很久不更新了 丢失可能低 万级QBS 毫秒延迟 主从高可用 RabbitMQ 基于erlang 扩展性差 社区活跃 中小企业用 万级QBS 微妙延迟 主从高可用 RocketMQ 阿里开源 定