首页 > 微信应用  > 

利用C#开发微信公众号之接收事件推送与消息排重的方法介绍

利用C#开发微信公众号之接收事件推送与消息排重的方法介绍
这篇文章主要介绍了C#微信公众号开发之接收事件推送与消息排重的方法,详细分析了事件推送与消息排重的使用技巧,对微信开发有一定参考借鉴价值,需要的朋友可以参考下

这篇文章主要介绍利用c#开发微信公众号之接收事件推送与消息排重的方法介绍,详细分析了事件推送与消息排重的使用技巧,对微信开发有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了C#微信公众号开发之接收事件推送与消息排重的方法。分享给大家供大家参考。具体分析如下:

微信服务器在5秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次。这样的话,问题就来了。有这样一个场景:当用户关注微信账号时,获取当前用户信息,然后将信息写到数据库中。类似于pc端网站的注册。可能由于这个关注事件中,我们需要处理的业务逻辑比较复杂。如送积分啊,写用户日志啊,分配用户组啊。等等……一系列的逻辑需要执行,或者网络环境比较复杂,无法保证5秒内响应当前用户的操作,那如果当操作尚未完成,微信服务器又给我们的服务器推送了一条相同的关注事件,我们将再次执行我们的那些逻辑,这样就有可能导致数据库中出现重复的数据(有的童鞋就会说了,我在插入数据之前先判断当前是否已经存在了,如果存在了就不执行插入的操作。我想说的是,我当初也是这样想的,但真实的运行环境和我们的调试环境还是有差距的,直到发现数据库中有不少重复的用户信息时,我才发现消息去重的重要性。)。

 消息的去重普通消息和事件消息是有区别的。普通消息使用msgid,而事件消息使用FromUserName + CreateTime。我的思路是: 新建类BaseMsg,有三个属性分别是FromUser,MsgFlag,CreateTime。代码如下:

代码如下:

public class BaseMsg{ /// <summary> /// 发送者标识 /// </summary> public string FromUser { get; set; } /// <summary> /// 消息表示。普通消息时,为msgid,事件消息时,为事件的创建时间 /// </summary> public string MsgFlag { get; set; } /// <summary> /// 添加到队列的时间 /// </summary> public DateTime CreateTime { get; set; }}

利用C#开发微信公众号之接收事件推送与消息排重的方法介绍由讯客互联微信应用栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“利用C#开发微信公众号之接收事件推送与消息排重的方法介绍