我们平台基于微信公众号,总粉丝数近3千万。现在在发送模版消息、客服消息时受到限制。不知道有什么更好的解决方案。
我们目前比较屎的方案:
1、建立发送任务,发送模版消息或客服消息。
2、两张队列表,一个模版消息队列表,一个客服消息队列表。当发送任务提交后,由mysql的事件来定时将某条任务分到3千万粉丝,模版消息任务进模版消息队列表,客服消息进客服消息队列表。
类似下面的结构
任务ID OPENID XXX1 XXX2 XXX3 XXX4 1
34rwfrwewesefsf dd gfgg ddd ddd
也就是会产生3千万条模版消息队列表或客服消息队列表
3、linux crontab做定时任务,20分钟执行一次shell脚本
shell脚本每次100到200并发调用 后台的发送服务。每个发送服务会先批量更新500条为一组发送,这样500个发送服务调用的数据互不干扰
现在大概20分钟大概能发送100万左右。本身基于数据库,所以对数据库压力也大。由于发送服务是调用微信的相关接口,而500条一组都是for循环发送,所以速度上并不快。无法定时时间发送完成。往往都是进了队列,很久后才发送到之前的任务
有没有更好的方案供改造
你可以看成队列,就是一个商城,既然商城的货销售不出去,那就是证明消费者不够,消费者不够,那就增加消费者.将队列分批.分成多个队列来执行.就是多个消费者.这样,消费者够了.然后就是数据库的问题.是否可以考虑从数据库中脱离出来.利用redis的队列.然后通过redis来同步数据库.这样是不是就减轻了数据库的压力.