
消息中间件
文章平均质量分 80
消息中间件:rabbitmq、kafka、RocketMQ、ActiveMQ、
狂奔的蜗牛Evan
hello world
展开
-
支付宝二面:生成订单30分钟未支付,则自动取消,该怎么实现?延时任务和定时任务的区别
最近读者在支付宝二面遇到一个问题:生成订单30分钟未支付,则自动取消,该怎么实现?其实这类延时任务的需求,在开发中经常会遇到,例如 生成订单30分钟未支付,则自动取消 生成订单60秒后,给用户发短信 对上述的任务,我们给一个专业的名字来形容,那就是延时任务。那么这里就会产生一个问题,这个延时任务和定时任务的区别究竟在哪里呢?一共有如下 3 点区别: 定时任务有明确的触发时间,延时任务没有 定时任务有执行周期,而延时任务在某事件触发后一段时间内执行,没有转载 2021-12-07 23:06:24 · 1344 阅读 · 0 评论 -
解决 spring-integration-mqtt 频繁报 Lost connection 错误
问题描述在之前的博客介绍了如何在Spring Boot 集成 MQTT,后面使用中没有发现问题,最近发现一直报错:Lost connection: Connection lost; retrying...Lost connection: 已断开连接; retrying...解决过程网上说是因为 client ID 重复,最开始是不相信的,因为我测试只启动了一个客户端。但是却怎么都定位不到异常原因,用重新回到 client ID 重复的这个思路上来:因为程序里同时作为订阅者和.转载 2021-08-24 18:58:20 · 13377 阅读 · 0 评论 -
SpringBoot 集成多个rabbitmq
SpringBoot 集成多个rabbitmq在项目中经常遇到一个springboot工程要连接多个rabbitmq。如果只连接一个,springboot可以零配置连接rabbitmq,这样不需要做额外的工作。但如果连接多个rabbitmq,就得做一些配置了。1 配置多个rabbitmq的连接地址:spring.rabbitmq.first.host=192.168.10.223spring.rabbitmq.first.port=5672spring.rabbitmq.first.use.转载 2021-08-24 16:57:24 · 1172 阅读 · 0 评论 -
RabbitMQ异常重启,部分消费队列不消费问题
RabbitMQ版本:RabbitMQ 3.6.8, Erlang 19.0.4jar包版本:spring-boot-starter-amqp 2.0.4.RELEASE问题背景:之前线上服务曾经出现MQ重启之后,服务不消费队列消息,其具体表现为Queue没有Consumer。但是当时没有拿到日志,并且本着对RabbitMQ这类中间件的信任,也并没有去做过多的深入研究,觉得是极其偶然事件。但是今天上午线上某个服务的RabbitMQ由于不知名原因重启,导致出现同样现象。该服务目前一共监听4个转载 2021-08-24 16:51:57 · 5331 阅读 · 0 评论 -
消息队列(六):如何解决消息队列的延时?消息队列满了以后该怎么处理?
大量消息在 mq 里积压了几个小时了还没解决几千万条数据在 MQ 里积压了七八个小时,从下午 4 点多,积压到了晚上 11 点多。这个是我们真实遇到过的一个场景,确实是线上故障了,这个时候要不然就是修复 consumer 的问题,让它恢复消费速度,然后傻傻的等待几个小时消费完毕。这个肯定不能在面试的时候说吧。一个消费者一秒是 1000 条,一秒 3 个消费者是 3000 条,一分钟就是 18 万条。所以如果你积压了几百万到上千万的数据,即使消费者恢复了,也需要大概 1 小时的时间才能恢复过来。一转载 2021-07-20 00:09:25 · 645 阅读 · 0 评论 -
消息队列(五):如何保证消息的顺序性?
先看看顺序会错乱的俩场景:RabbitMQ:一个 queue,多个 consumer。比如,生产者向 RabbitMQ 里发送了三条数据,顺序依次是 data1/data2/data3,压入的是 RabbitMQ 的一个内存队列。有三个消费者分别从 MQ 中消费这三条数据中的一条,结果消费者2先执行完操作,把 data2 存入数据库,然后是 data1/data3。这不明显乱了。Kafka:比如说我们建了一个 topic,有三个 partition。生产者在写的时候,其实可以指定一个 key,比如转载 2021-07-20 00:05:23 · 1076 阅读 · 0 评论 -
消息队列(四):如何保证消息的可靠性传输?
数据的丢失问题,可能出现在生产者、MQ、消费者中,咱们从 RabbitMQ 和 Kafka 分别来分析一下吧。RabbitMQ生产者弄丢了数据生产者将数据发送到 RabbitMQ 的时候,可能数据就在半路给搞丢了,因为网络问题啥的,都有可能。此时可以选择用 RabbitMQ 提供的事务功能,就是生产者发送数据之前开启 RabbitMQ 事务channel.txSelect,然后发送消息,如果消息没有成功被 RabbitMQ 接收到,那么生产者会收到异常报错,此时就可以回滚事务channe转载 2021-07-20 00:00:04 · 350 阅读 · 0 评论 -
消息队列(三):如何保证消息不被重复消费?
说一说可能会有哪些重复消费的问题。首先,比如 RabbitMQ、RocketMQ、Kafka,都有可能会出现消息重复消费的问题,正常。因为这问题通常不是 MQ 自己保证的,是由我们开发来保证的。挑一个 Kafka 来举个例子,说说怎么重复消费吧。Kafka 实际上有个 offset 的概念,就是每个消息写进去,都有一个 offset,代表消息的序号,然后 consumer 消费了数据之后,每隔一段时间(定时定期),会把自己消费过的消息的 offset 提交一下,表示“我已经消费过了,下次我要是重启啥转载 2021-07-19 23:51:50 · 607 阅读 · 0 评论 -
消息队列(二):如何保证消息队列的高可用?
如果有人问到你 MQ 的知识,高可用是必问的。RabbitMQ 的高可用性RabbitMQ 是比较有代表性的,因为是基于主从(非分布式)做高可用性的,我们就以 RabbitMQ 为例子讲解第一种 MQ 的高可用性怎么实现。RabbitMQ 有三种模式:单机模式、普通集群模式、镜像集群模式。单机模式单机模式,就是 Demo 级别的,一般就是你本地启动了玩玩儿的,没人生产用单机模式。普通集群模式(无高可用性)普通集群模式,意思就是在多台机器上启动多个 RabbitMQ 实例,每个机器转载 2021-07-19 23:47:50 · 150 阅读 · 0 评论 -
消息队列(一):消息队列优缺点及其选型
为什么使用消息队列使用消息队列的场景有很多,比较核心的有3个:解耦、异步、削峰。解耦如下场景,A系统要发送数据给BCD三个系统。如果新增E系统要调用A系统呢?如果过一段时间C系统不需要了呢?A系统负责人几乎要崩溃了...在这个场景中,A 系统跟其它各种乱七八糟的系统严重耦合,A 系统产生一条比较关键的数据,很多系统都需要 A 系统将这个数据发送过来。A 系统要时时刻刻考虑 BCDE 四个系统如果挂了该咋办?要不要重发,要不要把消息存起来?头发都白了啊!如果使用 MQ,A 系统转载 2021-07-19 23:36:36 · 941 阅读 · 0 评论 -
Rocketmq原理&最佳实践
一、 MQ背景&选型消息队列作为高并发系统的核心组件之一,能够帮助业务系统解构提升开发效率和系统稳定性。主要具有以下优势:削峰填谷(主要解决瞬时写压力大于应用服务能力导致消息丢失、系统奔溃等问题) 系统解耦(解决不同重要程度、不同能力级别系统之间依赖导致一死全死) 提升性能(当存在一对多调用时,可以发一条消息给消息系统,让消息系统通知相关系统) 蓄流压测(线上有些链路不好压测,可以通过堆积一定量消息再放开来压测)目前主流的MQ主要是Rocketmq、kafka、Rabbitmq,Ro转载 2021-03-19 19:01:10 · 624 阅读 · 0 评论 -
RabbitMQ经典问题解决方案(重复消费、丢失数据、消息有序)
RabbitMQ如何解决被重复消费和数据丢失的问题?想想为什么要使用MQ?1.解耦,系统A在代码中直接调用系统B和系统C的代码,如果将来D系统接入,系统A还需要修改代码,过于麻烦!2.异步,将消息写入消息队列,非必要的业务逻辑以异步的方式运行,加快响应速度3.削峰,并发量大的时候,所有的请求直接怼到数据库,造成数据库连接异常使用了消息队列会有什么缺点?1.系统可用性降低:你想啊,本来其他系统只要运行好好的,那你的系统就是正常的。现在你非要加个消息队列进去,那消息队列挂..转载 2021-01-19 18:48:52 · 9630 阅读 · 0 评论 -
RabbitMQ如何保证有序消费消息?如何防止消息被重复消费?
目录有序消费消息防止消息被重复消费有序消费消息注意:所谓有序指的是同一事物的多条消息让唯一的一个消费者消费,并保证消费顺序造成消息乱序消费的原因有两种情况一:情况二如何保证消息有序被消费情况一:情况二:防止消息被重复消费消息被重复消费的原因造成消费被重复消费的原因来源于我们之前为了防止消息在消费者端丢失,采用的手动回复MQ的解决方案。如果消费者处理消息成功,手动向MQ回复消息时,网络不稳定,无法...转载 2021-01-19 18:44:04 · 1484 阅读 · 0 评论 -
RabbitMQ的ack或nack机制使用不当导致的队列堵塞或死循环问题
记录几个RabbitMQ使用过程中容易踩的那些坑:1、自动ack机制会导致消息丢失的问题;简要代码如下,设置消息自动ack,这种情况下,MQ只要确认消息发送成功,无须等待应答就会丢弃消息,这会导致客户端还未处理完时,出异常或断电了,导致消息丢失的后果,解决方法就是把代码里的true,改成false,并在消息处理完后发ack响应。// 要监听队列,所以不能用using关闭channel通道var channel = GetChannel();var consumer = new Even转载 2021-01-19 18:38:47 · 4875 阅读 · 0 评论 -
Springboot 整合RabbitMq ,用心看完这一篇就够了
该篇文章内容较多,包括有rabbitMq相关的一些简单理论介绍,provider消息推送实例,consumer消息消费实例,Direct、Topic、Fanout的使用,消息回调、手动确认等。 (但是关于rabbitMq的安装,就不介绍了)在安装完rabbitMq后,输入http://ip:15672/,是可以看到一个简单后台管理界面的。在这个界面里面我们可以做些什么?可以手动创建虚拟host,创建用户,分配权限,创建交换机,创建队列等等,还有查看队列消息,消费效率,推送效率等等。以上这些..转载 2021-01-04 11:38:21 · 669 阅读 · 0 评论 -
SpringBoot: 整合消息服务之AMQP--RabbitMQ
AMQPAMQP:Advanced Message Queuing Protocol高级消息队列协议。其是一个线路层的协议规范,不是API规范(e.g: JMS)所以它是天然跨平台的。按照规范的格式发送数据,任何平台都可以通过AMQP进行消息交互。主流的StormMQ,RabbitMQ都实现了AMQPRabbitMQ的安装:安装指南:安装指南[推荐访问我这个链接,下面的安装步骤就可以跳过]RabbitMQ是一个实现了AMQP的开源消息中间件,使用高性能的Erlang编写(很古..转载 2020-12-30 17:14:53 · 564 阅读 · 1 评论 -
RabbitMQ教程(基础、安装、springboot集成)
1、基础性知识文档介绍关系RabbitMQ的一些使用场景和使用背景,基础性的概念知识,请参考这篇文章 消息队列之 RabbitMQ 。2、如何在MacOS 上安装RabbitMQ 关于安装,请参考这篇文章,亲测有效。在MacOS 上安装RabbitMQ 这里我使用的是macOS 10.13 版本,启动的时候需要找到RabbitMQ在本地的位置。 启动rabbitmq-server cd /usr/local/Cellar/rabbitmq/3.7.2/sbin.转载 2020-12-21 18:50:22 · 610 阅读 · 0 评论 -
RabbitMQ入门教程(有大纲)
RabbitMQ入门目录:1、什么是MQ 2、MQ是干什么用的?3、MQ衡量标准4、主流竞品分析 4.1、ActiveMQ 4.2、Kafka 4.3、RocketMQ5、技术背景知识介绍 5.1、AMQP高级消息队列协议 5.2、Erlang语言6、RabbitMQ 6.1、RabbitMQ的优势: 6.2、RabbitMQ的整体架构 6.3、RabbitMQ的消息流转 6.4、RabbitMQ各组件功能 .转载 2020-12-21 18:37:02 · 528 阅读 · 1 评论 -
Kafka学习之路 (一)Kafka的简介
Kafka学习之路 (一)Kafka的简介目录一、简介 1.1 概述 1.2 消息系统介绍 1.3 点对点消息传递模式 1.4 发布-订阅消息传递模式 二、Kafka的优点 2.1 解耦 2.2 冗余(副本) 2.3 扩展性 2.4 灵活性&峰值处理能力 2.5 可恢复性 2.6 顺序保证 2.7 缓冲 2.8 异步通信 三、常用Message Queue对比 3.1 RabbitMQ 3.2 Redis 3.3 Zer转载 2020-09-15 11:15:16 · 612 阅读 · 0 评论 -
RabbitMQ通过shovel插件迁移数据
前言生产环境中会遇到RabbitMQ数据迁移的场景,例如:切换云服务厂商、不同Region之间数据迁移、新搭建RabbitMQ实例,数据需要同步至新的RabbitMQ实例。前提条件:源RabbitMQ实例打开了shovel插件。目的RabbitMQ实例打开了shovel插件。源实例与目的实例能够网络互通。当前以华为云不同Region下RabbitMQ实例数据迁移为例子。已在华为云北京Region、上海Region各创建一个集群实例。现在需要将上海Region的数据迁移至北..转载 2020-06-24 09:33:38 · 1497 阅读 · 0 评论 -
解决 RabbitMQ 集群 Channel shutdown: connection error 错误(HAProxy 负载均衡)
原文地址:https://www.cnblogs.com/xishuai/p/rabbitmq-and-haproxy-channel-shutdown-connection-error.html相关文章:搭建 RabbitMQ Server 高可用集群具体错误信息:2018-05-04 11:21:48.116 ERROR 60848 --- [.168.0.202:80...转载 2019-05-31 19:09:02 · 5163 阅读 · 0 评论