【java】调用微信模板消息推送,线程池优化推送速度。

本文介绍了如何优化微信模板消息推送过程,包括在用户关注时存储用户信息,定时同步关注用户列表,以及利用Java的newFixedThreadPool线程池实现每100毫秒推送10条消息,将5000个用户的推送时间从10分钟缩短到1分钟,有效提升了推送效率。
摘要由CSDN通过智能技术生成

项目中用到微信小程序模板推送,原来流程如下:

1、获取当前公众号关注用户列表;

2、根据用户列表获取用户信息;

3、循环用户列表进行发送;

4、等待发送返回结果。将用户信息(昵称)、发送状态等保存到发送记录表;

存在问题:

1、每次推送都会到微信获取用户列表,并获取每个用户的昵称。接口调用频率高,发送时间较长。

推送:5000个用户,大约需要10分钟左右;



优化方案:(开启开发者功能)

1、用户关注公众号时,获取用户信息,存入用户信息表;用户取消关注也同步修改本地数据;

2、每晚定时同步公众号当前关注用户列表,防止遗漏;

3、推送模板时从本地获取公众号当前关注用户数据,直接推送这批用户。节省来回调用微信接口的时间成本;

当然,如果单纯这样优化,推送速度并没有明显提升;


再次优化:

1、推送模板消息使用线程池。我使用了java自带线程池newFixedThreadPool进行推送。设置每100毫秒推送10条,5000条数据也就1分钟推送完成。完美满足业务实时性需求。

2、线程池使用参考文档:http://cuisuqiang.iteye.com/blog/2019372

(2) newFixedThreadPool
创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。示例代码如下:

Java代码   收藏代码
    • 0
      点赞
    • 9
      收藏
      觉得还不错? 一键收藏
    • 3
      评论
    评论 3
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值