你的浏览器不支持canvas

做你害怕做的事情,然后你会发现,不过如此。

微信公众号模板消息重复发送两条信息

时间: 作者: 黄运鑫

本文章属原创文章,未经作者许可,禁止转载,复制,下载,以及用作商业用途。原作者保留所有解释权。


  • 业务需求为服务端给未打卡用户推送模板消息,每天提醒一次,局部代码如下:
//给未打卡用户推送微信模板消息
for (ClockApply apply : applyList) {
    iNoticeService.sendNotice(apply.getUserId(), apply.getClockActivityName());
}
  • 功能在正常使用了一段时间的情况下,某一天开始用户会同时接受到两条一模一样的消息,几个测试帐号都有这个问题。
  • 经过确认,使用期间代码没有任何改动,并且检查日志也没有发现任何问题,确实只发送了一条消息。
  • 然后代码修改成只给几个测试用户发消息,多次测试未能复现问题,代码如下:
//给未打卡用户推送微信模板消息
for (ClockApply apply : applyList) {
    if (!apply.isTestUser()) {
        continue;
    }
    iNoticeService.sendNotice(apply.getUserId(), apply.getClockActivityName());
}
  • 但是将代码还原后第二天又出现了重复发送的问题;怀疑是发送人数过多导致的,因为期间只有人数发生了改变,从十几个人增长到了上百人,重复发送的bug是在人数达到一百四五十时出现的;所以怀疑是发送频率过高。

  • 将代码改为每次发送休眠2秒后,再也没出现重复发送的问题,修改后代码如下:

//给未打卡用户推送微信模板消息
for (ClockApply apply : applyList) {
    iNoticeService.sendNotice(apply.getUserId(), apply.getClockActivityName());
    Thread.sleep(2000);
}

对于本文内容有问题或建议的小伙伴,欢迎在文章底部留言交流讨论。