微信开发中的消息排重机制实现

在微信开发中,微信的重推机制可能导致消息重复。针对此问题,可以通过msgid和FromUserName + CreateTime进行排重。文章介绍了两种方案:使用静态变量List存储消息,以及使用Redis作为存储中介,并提醒在事件消息排重时考虑Event字段以避免误判。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

微信公众平台开发时,微信推送消息的机制是推送过来后如果5秒内收不到响应则认为没有推送成功,会再次推送,总共推送三次。如果我们服务器接收到消息没有及时响应,就会触发微信的“重推机制”,这就需要我们在服务端对微信推送过来的消息进行排重。
我们不应该让服务器出现处理时间过长的情况,对于业务复杂、处理时间长度不可控的代码可以进行异步处理,每次接收到微信推送后都立即返回空串,当然这是另外一回事了,不是今天要说的。


先看微信公众号开发文档原文

普通消息

1、关于重试的消息排重,推荐使用msgid排重。
2、微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次。假如服务器无法保证在五秒内处理并回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试。

事件推送:

微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次

关于重试的消息排重,推荐使用FromUserName + CreateTime 排重。
假如服务器无法保证在五秒内处理并回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试。

微信推送过来的消息无外乎上面两种,微信文档也给出了排重方法,下面说说我的方案:

方案一

  1. 创建判断重复消息的DuplicateRemovalMessage类;
  2. 把微信推送的消息解析赋值给Duplica
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值