ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 低调看直播体育app软件下载 >> 移动开发 >> [微信公众号开发]推送事件消息排重bug解决

[微信公众号开发]推送事件消息排重bug解决

来源:网络整理     时间:2016-01-14     关键词:

本篇文章主要介绍了"[微信公众号开发]推送事件消息排重bug解决",主要涉及到方面的内容,对于移动开发感兴趣的同学可以参考一下: 1.发现之前已经讨论过如何过滤微信推送的事件消息和普通消息,今天查看线上微信接口推送事件日志发现有重复消息,在系统没有高负载的情况下,这是基本不可能出现的情况,...

1.发现

之前已经讨论过如何过滤微信推送的事件消息和普通消息,今天查看线上微信接口推送事件日志发现有重复消息,在系统没有高负载的情况下,这是基本不可能出现的情况,其中原委待我慢慢道来:

再看一遍微信公众号开发文档的排重建议

微信公众号开发文档 写道

用户在关注与取消关注公众号时,微信会把这个事件推送到开发者填写的URL。方便开发者给用户下发欢迎消息或者做帐号的解绑。
微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次
关于重试的消息排重,推荐使用FromUserName + CreateTime 排重。
假如服务器无法保证在五秒内处理并回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试。

系统打印的重复消息内容为(星号是马赛克):

{FromUserName=oIh7bvukj**********ZvcAIDug, EventKey=https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx2ce10f858dd547eb&redirect_uri=http%3A%2F%2Fwechat.hitumedia.com%2Fhituwechat%2FshakeshakePage.action&resp Event=VIEW, CreateTime=1452742113, MenuId=401850190, ToUserName=gh_********df, MsgType=event}

2.排查

此为事件消息,我用的是FromUserName + CreateTime 排重,如果该消息重复,数据库中必定有了相同FromUserName + CreateTime 的记录,查了事件日志数据表,结果一目了然:



3.分析原因

我们微信公众号开启了获取用户地理位置的功能,用户打开微信后点击菜单进入了页面,此时微信后台向我们推送了用户地理位置事件消息和用户点击菜单事件消息,这两个消息的CreateTime 和openid相同,导致被我们系统识别为重复消息,文档推荐的排重方式过滤掉了合法数据,这应该是微信后端服务的一个BUG!

4.解决

消息排重的时候把Event字段也加入其中即可.

具体参考我之前的文章《微信推送消息排重解决办法

欢迎指正,感谢关注。

以上就介绍了[微信公众号开发]推送事件消息排重bug解决,包括了方面的内容,希望对移动开发有兴趣的朋友有所帮助。

本文网址链接:http://www.codes51.com/article/detail_287894.html

相关图片

相关文章