最近遇到的一个问题,记录一下。...上篇文章说到 SpringBoot+Redis实现简单的发布/订阅 事情原委 我们目前项目中短信模块就是采用的 Redis 来作消息队列,起因是最近有应用反映下发短信时,偶尔会有发送两次的情况。...image.png 找到问题所在就开始修复了,主要解决思路是让第二次获取锁失败就行了。...总结 通过这次我们也知道,进行业务处理时,不光要进行加锁解锁,还要考虑各种情况;在处理消息队列时,重复消费是经常出现的问题,这里也算是收获一份经验了。...Copyright: 采用 知识共享署名4.0 国际许可协议进行许可 Links: https://lixj.fun/archives/redis重复消费问题
文章目录 所谓Rebalance到底在解决什么问题 Rebalance具体是如何决定分配的数量的 Rebalance是怎么对多Topic做分配 Rebalance什么时候触发 Rebalance可能会带来消息的重复消费...正因为消费者拿到了明确的队列,所以它们才能针对对应的队列做循环拉取消息的处理,以下是消费者客户端和broker通信的部分代码,可以看到通信的参数里有一个重要的参数,就是queueId PullMessageRequestHeader
问题 既然使用RabbitMQ,那我们就不得不考虑关于消息的问题: 消息丢失问题 重复消费问题 消息丢失问题 这里对用户积分增加,如果把消息搞丢了,用户积分最终并不会得到增加,那用户肯定不干了,为了防止这类问题出现...1:我们采用confirm模式+持久化+手动ack 2:消息丢失种鸽问题:消息发送失败,我们采用失败消息记录表 3:定时任务轮训失败消息记录,再次发送 这里为了防止多次重试问题,所以设置一个重试上限,并加入警告...重复消费问题 这里是对用户积分增加,所以,绝对不能重复消费,不然这样会导致用户积分暴增,数据会出现一致性问题。...解决: 1:每个消息有一个唯一的reqId,reqId=业务前缀+UUID+年月日时分秒毫秒的时间戳 2:在对比是否重复消费之前,对用户加上分布式锁,key=固定用户分布式锁前缀+userId 整体流程图...标配版: 标配版 为了更好地监控消息发送失败问题,我们还可以对标配版进行升级。
15如何解决消息重复,保证消息顺序问题 自信和希望是青年的特权。——大仲马 引言 我在《12.项目中为什么要使用消息队列》中列举了两个使用消息队列的例子。...这不是“面试造火箭,工作拧螺丝”,消息重复,消息积压这类问题是你入职后工作中真真切切会遇到的,不是面试官故意刁难你。 1.面试官:那你有考虑过消息重复问题怎么解决吗?...我: 产品说不行,订单RD说他不保证消息不重复,Kafka架构RD也说无法保证消息不重复,那怎么办?...我是负责积分系统的,针对消息重复问题,我会针对积分累计接口做**“幂等”**设计,这个问题,首先我们应该从上游就做消息去重处理,但是我们不能100%相信上游系统一定可靠,我是消息消费端,只有我这边做了幂等设计才能完全避免这种和钱相关的...总结 关于消息重复和消息顺序消费问题解决思路比较简单,都是一些小技巧,虽然内容比较枯燥,但是我已经尽力说得通俗易懂。 如果用两句话概括这一接的内容: 如何保证消息重复问题:消费端接口幂等。
之后,面试官通常会追问“怎么解决消息被重复消费的问题? ” 比如:在消息消费的过程中,如果出现失败的情况,通过补偿的机制发送方会执行重试,重试的过程就有可能产生重复的消息,那么如何解决这个问题?...这个问题其实可以换一种说法,就是如何解决消费端幂等性问题(幂等性,就是一条命令,任意多次执行所产生的影响均与一次执行的影响相同),只要消费端具备了幂等性,那么重复消费消息的问题也就解决了 我们还是来看扣减京豆的例子...在这里我多说一句,想要解决“消息丢失”和“消息重复消费”的问题,有一个前提条件就是要实现一个全局唯一 ID 生成的技术方案。这也是面试官喜欢考察的问题,你也要掌握。...当然,除了“怎么解决消息被重复消费的问题?”之外,面试官还会问到你“消息积压”。 原因在于消息积压反映的是性能问题,解决消息积压问题,可以说明候选者有能力处理高并发场景下的消费能力问题。...如何保证消息不被重复消费? 在进行消息补偿的时候,一定会存在重复消息的情况,那么如何实现消费端的幂等性就这道题的考点。 如何处理消息积压问题?
点击关注公众号,Java干货及时送达 回答完“如何确保消息不会丢失?” 之后,面试官通常会追问“怎么解决消息被重复消费的问题?...” 比如:在消息消费的过程中,如果出现失败的情况,通过补偿的机制发送方会执行重试,重试的过程就有可能产生重复的消息,那么如何解决这个问题?...在这里我多说一句,想要解决“消息丢失”和“消息重复消费”的问题,有一个前提条件就是要实现一个全局唯一 ID 生成的技术方案。这也是面试官喜欢考察的问题,你也要掌握。...当然,除了“怎么解决消息被重复消费的问题?”之外,面试官还会问到你“消息积压”。 原因在于消息积压反映的是性能问题,解决消息积压问题,可以说明候选者有能力处理高并发场景下的消费能力问题。...如何保证消息不被重复消费? 在进行消息补偿的时候,一定会存在重复消息的情况,那么如何实现消费端的幂等性就这道题的考点。 如何处理消息积压问题?
之后,面试官通常会追问“怎么解决消息被重复消费的问题? ” 比如:在消息消费的过程中,如果出现失败的情况,通过补偿的机制发送方会执行重试,重试的过程就有可能产生重复的消息,那么如何解决这个问题?...这个问题其实可以换一种说法,就是如何解决消费端幂等性问题(幂等性,就是一条命令,任意多次执行所产生的影响均与一次执行的影响相同),只要消费端具备了幂等性,那么重复消费消息的问题也就解决了。...在这里我多说一句,想要解决“消息丢失”和“消息重复消费”的问题,有一个前提条件就是要实现一个全局唯一 ID 生成的技术方案。这也是面试官喜欢考察的问题,你也要掌握。...当然,除了“怎么解决消息被重复消费的问题?”之外,面试官还会问到你“消息积压”。 原因在于消息积压反映的是性能问题,解决消息积压问题,可以说明候选者有能力处理高并发场景下的消费能力问题。...如何保证消息不被重复消费? 在进行消息补偿的时候,一定会存在重复消息的情况,那么如何实现消费端的幂等性就这道题的考点。 如何处理消息积压问题?
引出 最近在写一个项目时,要根据时间进行不同的展示,直接用new Date().getTime()获取当前时间,结果就出问题了。有些用户擅自修改自己的本地时间,导致获取到的时间并不是当前时间,尴尬。...但是,如果用户在进入页面之后修改时间的话,就会得到错误的时间差,并不能解决问题。...然后我想到了定时器,记录时间秒数experienceTime,每秒+1,固然会牺牲一定的性能,但问题是我没想到更好的办法。...this = this; setInterval(function() { _this.experienceTime++; }, 1000); }; 当然,看着就有很多问题
如图,有这么个需求,测试人员在测试过程中提了一个bug,手机锁屏再唤醒倒计时时间没有更新,仍从锁屏的时间继续,于是开始寻找解决之法 经了解得知,锁屏时候,浏览器的一切活动会停止运行,那么js也无法幸免,...this.times = this.times - (Date.now() - this.closeTime)/1000; } }, } 经实验,加上这段代码后确实倒计时更新了...,但是时间显示会快2到3秒,不得其解,感觉应该是取值的时候比屏幕唤醒慢了,比如我锁屏5秒,但是在唤醒时倒计时少了7秒。...也想到了一种办法,就是唤醒时候重新拉取服务端的时间,然后更新虚拟dom,在实际操作中,由于是异步获取,会看到倒计时数字那里有明显的闪一下更新,不利于用户体验。...所以最终还是采用了visibilitychange事件来处理,毕竟用户在这个页面不会停留太久,不过这并没有完美的解决问题,如果你有更好的方法,希望能告诉我。
之后,面试官通常会追问“怎么解决消息被重复消费的问题?”。 比如:在消息消费的过程中,如果出现失败的情况,通过补偿的机制发送方会执行重试,重试的过程就有可能产生重复的消息,那么如何解决这个问题?...这个问题其实可以换一种说法,就是如何解决消费端幂等性问题(幂等性,就是一条命令,任意多次执行所产生的影响均与一次执行的影响相同),只要消费端具备了幂等性,那么重复消费消息的问题也就解决了。...在这里多说一句,想要解决“消息丢失”和“消息重复消费”的问题,有一个前提条件就是要实现一个全局唯一 ID 生成的技术方案。这也是面试官喜欢考察的问题,你也要掌握。...当然,除了“怎么解决消息被重复消费的问题?”之外,面试官还会问到我们“消息积压”。原因在于消息积压反映的是性能问题,解决消息积压问题,可以说明候选者有能力处理高并发场景下的消费能力问题。...如何保证消息不被重复消费? 在进行消息补偿的时候,一定会存在重复消息的情况,那么如何实现消费端的幂等性就这道题的考点。 如何处理消息积压问题?
有用户经常会问到这个问题,为什么我腾讯云HiFlow中的企业微信群机器人修改/删除后,其他流程会被影响?或者为什么我的企业微信群机器人修改之后,所有群的消息都发到一个群了?...企业微信机器人账号配置=全局通用首先,我们要理解一个概念,配置账号这里增加的所有账号,都是全局通用的,也就是其他流程都可以调用,这样设置的目的是为了减少用户配置账号的流程。...比如有流程1、流程2、流程3需要使用不同的机器人账号a 和账号b,可以同时设置两个不同的机器人账号,比如:流程1 选择对应 的机器人账号a流程2 选择对应的机器人账号b流程3 可以同时选择对应的机器人账号...a、b企业微信机器人账号对应关系所以如果这个时候改变了机器人账号a的配置,会同时影响流程1、流程3两个流程。
一、什么问题 当前端开发过程中,经常用到事件,随着业务代码这一块的复杂化,在事件和多次注册和调用时,如果处理不好就会出现同一事件触发多次的问题。...今天我们就聊一聊这个问题 二、事例 下面这段代码是一个简单的例子,页面上一有一个安钮。当点击’安钮‘时创建一个button为 test button代码插入area中。...border-radius:5px; } .area{ width:100px; height:100px; margin-top:40px; border:2px; border:1px solid #000; } js
三、原因 此时我们分析上面这段代码这么写有什么问题。为什么会事件会累加执行?可以看出出第二次的事件绑定和第一次的事件绑定都注册到了同一个DIV身上,在JQ中事件注册同时注册到同一个DIV身时。...那如何解决这个问题 四、解决方法: 1)绑定之前先解绑 $(function(){ $(".add").on('click',function(eve){ $(".area...console.log("test button ....."); }); }); 总结:上面列举的只不过是一个小例子,在工作当开发会碰到比这更复杂更多的多层事件问题...多次请求的问题。这些问题也是在公司团队中的同事经常犯的一些错误,所以在今后开发的过程中,要养成一个好的编程习惯 ,才能保证代码的更强壮。
引入 MQ 消息中间件最直接的目的是:做系统解耦合流量控制,追其根源还是为了解决互联网系统的高可用和高性能问题。...以上就是整MQ的生产消费过程,看似不会出现问题,但是如果是在分布式系统中,就不能保证MQ是不是丢失你的消息,消费者是否消费了你的消息。...二、如何保证消息被重复消费呢换句话说就是如何解决消费端幂等性的问题(幂等性,就是一条命令,任意多次执行所产生的影响均与一次执行的影响相同),只要消费端具备幂等性,那么就可以避免重复消费的问题。...对于解决消息丢失和消息重复消费,都有个前提是创建一个全局的ID。创建全局的ID的方式有数据库自增主键,UUID、Redis、Twitter-Snowflake 算法。...总结如下:图片三、如何解决消息积压问题如果出现消息积压问题,必然是一个消费端的性能问题。如果出现这个情况,首先那要临时扩容,增加消费端的数量,与此同时,降级一些非可信的业务。
之后,面试官通常会追问“怎么解决消息被重复消费的问题?”。 比如:在消息消费的过程中,如果出现失败的情况,通过补偿的机制发送方会执行重试,重试的过程就有可能产生重复的消息,那么如何解决这个问题?...这个问题其实可以换一种说法,就是如何解决消费端幂等性问题(幂等性,就是一条命令,任意多次执行所产生的影响均与一次执行的影响相同),只要消费端具备了幂等性,那么重复消费消息的问题也就解决了。...在这里多说一句,想要解决“消息丢失”和“消息重复消费”的问题,有一个前提条件就是要实现一个全局唯一 ID 生成的技术方案。这也是面试官喜欢考察的问题,你也要掌握。...我个人在业务中比较倾向于选择雪花算法,在项目中也进行了一定的改造,主要是让算法中的 ID 生成规则更加符合业务特点,以及优化诸如时钟回拨等问题。 当然,除了“怎么解决消息被重复消费的问题?”...如何保证消息不被重复消费? 在进行消息补偿的时候,一定会存在重复消息的情况,那么如何实现消费端的幂等性就这道题的考点。 如何处理消息积压问题?
本文主要分享埋坑之自动推送 JS 代码的优化... ? 一、问题描述 百度近些年推出过多种收录推送工具,比如结构化数据插件、主动推送、自动推送 js 等等。...这 js 只需要添加到新页面?那新页面收录之后,我们再去删除 js 代码?那我还要经常关注页面是不是被收录?那几万个页面的网站还得靠工具检测咯? 重复推送到底有没有副作用,百度并没有给我明确的答复。...那么自动推送 js 获取到的 Url 也变了!它就会将这个 Url 推送到搜索引擎!实际上,这些相同内容的页面我们并不希望重复抓取和收录!...二、问题解决 根据上面的分析,这类自动推送 js 代码就不能整站添加,而是只需添加到未收录且正规 Url 的页面。...并且在确认未收录之后,才会在网页 footer 中输出自动推送 js 代码。 这样就规避了已收录页面重复推送和百度实时查询导致加载慢两个问题!
<img src="" alt="" id="one...88888); 在上述代码执行过程中,发现这个qlogo函数只能执行一次,多次执行则提示qlogo不是一个函数 经过一番之后,查找<em>问题</em>...,下面详见<em>问题</em>发生原因解析! ...第一次正常执行没有<em>问题</em>,且看第二次<em>问题</em>分析,第二次qlogo被执行的调用了参数 three.src=qlogo(6688330) 此时函数体应该是这个样子 可以console.log(qlogo)
在开始之前,先在你脑海中回答这个问题 推特上大约一半的回答都是错误的。答案并不是 V8(或者虚拟机)!!...你可以在此处查看 Node 中的计时器源代码(https://github.com/nodejs/node/blob/master/lib/timers.js)。...有些人可能认为这是一个糟糕的面试问题,为什么要知道这个问题呢?!...(https://jscomplete.com/g/js-timers) 延迟函数的执行 定时器函数是高阶函数,可用于延迟或重复执行其他函数(它们作为第一个参数接收)。...使用 node 命令执行 solution1.js 文件将打印出我们挑战的要求,4 秒后的第一条消息和 8 秒后的第二条消息。 重复执行一个函数 如果我要求您每隔 4 秒打印一条消息怎么办?
version = version + 1 where version = 1; MQ最重要的两个特点就是生产端保证可靠性投递和消费端幂等性消费 消费端-幂等性保障 由消费端实现幂等性, 就意味着, 我们的消息永远不会消费多次..., 即使收到多条一样的消息 实现方式: 唯一ID + 指纹码机制 唯一ID或指纹码机制, 利用数据库主键去重 select count(1) from t_order where id = 唯一ID(或者
「咦,你这个项目倒计时不错啊,怎么做的?」...项目经理小A看到有同事在项目沟通工作群中,有机器人自动发布了这样一个倒计时消息,觉得很适合在项目冲刺时提升大家对时间节点的掌控和紧迫感,希望也可以在自己的项目管理中使用到。...如果你也是一名项目经理,正在或者以后会进行一些项目管理工作,不妨学习一下如何低成本制作这样的倒计时工具。下面我们将以企业微信通知为例,进行配置演示。...我们选择企业微信群机器人,根据计算的变量,设置好通知的文本。以上三个节点配置好了之后,保存并上线流程,就可以实现每个工作日自动发送项目倒计时了。...用户可以通过零代码画布,简单的设定【触发条件】+【执行条件】打造符合企业业务场景的自动化工作流,把日常工作中一些繁复、重复、价值低的事务性工作自动化完成,比如自动发消息通知、跨应用数据自动同步、定时处理特定任务等
领取专属 10元无门槛券
手把手带您无忧上云