当前位置:网站首页>Redis消息队列重复消费问题
Redis消息队列重复消费问题
2022-06-12 12:50:00 【Li_XiaoJin】
最近遇到的一个问题,记录一下。
上篇文章说到 SpringBoot+Redis实现简单的发布/订阅
事情原委
我们目前项目中短信模块就是采用的 Redis 来作消息队列,起因是最近有应用反映下发短信时,偶尔会有发送两次的情况。
经过排查,确实是会存在,这个是我们研发之前的处理是发送短信后就会删除锁,这样如果出现网络波动的情况,就会出现发送两次的情况。
具体情况是这样,我们有两个实例,每个实例都订阅了topic,发送时会通知每个消费者,每个实例去获取锁,然后发送短信; 当时的情况是这样,生产者发送后,消费者开始消费 第一个实例消费的时间是 18:10:024,然后进行业务处理,发送短信完成时间是 18:10:056(通过日志查看到时间),处理得很快,几十毫秒就处理完了,然后把锁删除。 第二个实例消费的时间是 18:10:244,这时第一个实例已经处理完成,并且把锁删除掉,所以这时第二个实例尝试获取锁时会直接成功,接着进行业务处理,重新发送第二条短信完成时间是 18:10:268。 所以就造成偶尔会出现发送两次的情况。
找到问题所在就开始修复了,主要解决思路是让第二次获取锁失败就行了。
这里我们修改为获取锁进行业务处理完成之后,不直接删除锁,而是让它过一段时间失效,这样别的实例再此期间再获取锁时就不会成功了,即使第一次处理得很快,也不会被两次消费处理。
这里我们设置失效时间是 1分钟,后期可以根据业务情况进行调整。
总结
通过这次我们也知道,进行业务处理时,不光要进行加锁解锁,还要考虑各种情况;在处理消息队列时,重复消费是经常出现的问题,这里也算是收获一份经验了。
Copyright: 采用 知识共享署名4.0 国际许可协议进行许可 Links:https://lixj.fun/archives/redis重复消费问题
边栏推荐
- Constant time delete / find any element in array
- unittest框架
- itkMultiResolutionImageRegistrationMethod
- Known as the next generation monitoring system! See how awesome it is
- Geek challenge 2021 Web
- Iterator, generator generator details
- R语言ggplot2可视化:使用ggrepel包在线图(line plot)的尾端那个数据点添加数值标签(number label)
- Unittest framework
- this.$ How to solve the problem when refs is undefined?
- R语言可视化分面图、假设检验、多变量分组t检验、可视化多变量分组分面条形图(faceting bar plot)并添加显著性水平、添加抖动数据点(jitter points)
猜你喜欢

快速下载谷歌云盘大文件的5种方法

嵌入式系統硬件構成-基於ARM的嵌入式開發板介紹

Uniapp wechat applet long press the identification QR code to jump to applet and personal wechat

Known as the next generation monitoring system! See how awesome it is

LeetCode滑动窗口刷题总结

403 you don't have permission to access this resource

Simple picture preview
![Brush questions [de1ctf 2019]shellshellshell](/img/73/00782a567e6596eb4b561b69142277.jpg)
Brush questions [de1ctf 2019]shellshellshell

When to use binary search

itk::SymmetricForcesDemonsRegistrationFilter
随机推荐
R语言可视化分面图、假设检验、多变量分组t检验、可视化多变量分组分面条形图(faceting bar plot)并添加显著性水平、添加抖动数据点(jitter points)
Geek challenge 2021 Web
安全KNN
Openmax (OMX) framework
一个ES设置操作引发的“血案”
数组——双指针技巧秒杀七道数组题目
嵌入式系统硬件构成-基于ARM的嵌入式开发板介绍
中科物栖CEO张磊:“芯片+OS”范式在万物互联时代的机遇与挑战|量子位·视点分享回顾...
嵌入式驱动程序设计
[embedded] serial communication and its case
Online picture material
Dasctf Sept x Zhejiang University of technology autumn challenge Web
入门深度学习与机器学习的经验和学习路径
ITK Examples/RegistrationITKv4/DeformableRegistration
VTK three views
itk::SymmetricForcesDemonsRegistrationFilter
itkMultiResolutionImageRegistrationMethod
The 4th Zhejiang CTF preliminary contest web pppop
vtk 图像序列鼠标交互翻页
分享PDF高清版,系列篇