最近在做一个微信公众平台,需要将用户回复的信息分析成特定的数据然后记录到数据库,比如用户回复aa 11,后台需要将aa和11代表的数据以及其它相关信息(如发送的时间,发送者等)都记录到数据库。不过可能是微信服务器的问题,有些数据会发送给后台两遍,结果导致数据库内相同的数据重复输入。 我基本可以确定不是我程序的问题,因为这个现象不会必然出现,相同的数据再发送一遍也不一定会出现这种情况。 然后我将微信消息XML里的MsgId做了CRC32校验再记录到数据库作为判断数据唯一的标准,结果今天还是出现重复记录的问题,数据库里可以看到这两个校验值不一样,估计这样重复发送微信也会修改其中的MsgId。 求助大神给个方法判断消息的唯一性!PS:不知道XML里面的CreateTime行不行? 实在不知道发哪个版块好,先发这里吧。。版主觉得有合适的帮忙转移下,多谢! |
|
当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上。
微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次 关于重试的消息排重,推荐使用msgid排重。 假如服务器无法保证在五秒内处理并回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试。 |
|
40分 |
把用户信息和createtime做成唯一索引
|
MsgId试过,无效,貌似不是因为服务器无响应而引起的重新发起请求(用的SAE,且数据处理挺少,应该也不会超过5s),微信开发平台的问答系统里也有人反馈过5s内重复post内容,我现在用了FromUserName和CreateTime,但官方文档是推荐事件消息排重用这个,不知道是否适用于普通消息 |
|
这个适用于普通文本消息嘛?昨天我这么改了,今天没有发生相同问题,不过也还不一定,还得观察观察 |
|
我写了一个 微微信.NET:开源的ASP.NET微信公众号应用平台
大家可以分享代码 互相交流 CSDN博客:http://blog.csdn.net/weixin_net |
|
能说下你做的步骤吗?或者把代码贴出来,怎么做的排重和回复空串
|