内容简介:wechat_pusher - 基于Golang开发的高性能微信消息定时推送框架
- https://github.com/hundredlee/wechat_pusher
- 欢迎star && fork
功能列表
-
消息推送
-
模板消息推送
- model -> message.go
- task -> template_task.go
- 图片推送(TODO)
- 文字推送(TODO)
- 图文推送(TODO)
-
模板消息推送
- 日志存储
- 计划任务
如何开始?
第一步:当然是go get
-
go get github.com/hundredlee/wechat_pusher.git
-
项目结构如下:
├── README.md ├── config │ └── config.go ├── config.conf ├── config.conf.example ├── enum │ └── task_type.go ├── glide.lock ├── glide.yaml ├── hlog │ ├── filelog.go │ ├── filelog_test.go │ └── hlog.go ├── main.go ├── main.go.example ├── models │ ├── message.go │ └── token.go ├── redis │ ├── redis.go │ └── redis_test.go ├── statics │ └── global.go ├── task │ ├── task.go │ └── template_task.go ├── utils │ ├── access_token.go │ ├── crontab.go │ └── push.go └── vendor └── github.com
第二步:创建一个项目
创建配置文件
- 项目根目录有一个config.conf.example,重命名为config.conf即可
- 内容如下:
[WeChat] APPID= SECRET= TOKEN= [Redis] POOL_SIZE= TIMEOUT= HOST= PASS= DB= [Log] LOG_PATH=
-
WeChat部分
- APPID && SECRET && TOKEN 这些是微信开发者必须了解的东西。不细讲
-
Redis部分
- POOL_SIZE 连接池大小 ,整型 int
- TIMEOUT 连接超时时间 ,整型 int
- HOST 连接的IP 字符串 string
- PASS 密码 字符串 string
- DB 数据库选择 整型 int
-
Log部分
- LOG_PATH 日志存放文件夹,例如值为wechat_log,那么完整的目录应该是 GOPATH/wechat_log
-
调用的时候这么写:
conf := config.Instance() //例如wechat 的 appid appId := conf.ConMap["WeChat.APPID"]
模板配置怎么配置
- 我们看看models文件夹里面有message.go文件,里面其实就是模板的格式。
- 具体怎么用,看看main.go.example文件里面的示例。
mess := models.Message{ ToUser: "openid", TemplateId: "templateid", Url: "url", Data: models.Data{ First: models.Raw{"xxx", "#173177"}, Subject: models.Raw{"xxx", "#173177"}, Sender: models.Raw{"xxx", "#173177"}, Remark: models.Raw{"xxx", "#173177"}}} //封装成一个任务,TemplateTask表示模板消息任务 task := task.TemplateTask{} task.SetTask(mess)
- 以上代码是模板消息的配置,这个微信开发者应该都能看懂。
如何创建一个任务
-
例如我们要创建一个模板消息定时推送任务
- 第一步,封装任务
- 第二步,添加任务,并设置任务类型、并发执行的个数、失败尝试次数等。
- 第三步,启动任务
- 我们用示例代码演示整个完整的过程
package main import ( "github.com/hundredlee/wechat_pusher/enum" "github.com/hundredlee/wechat_pusher/models" "github.com/hundredlee/wechat_pusher/task" "github.com/hundredlee/wechat_pusher/utils" "runtime" ) func main() { runtime.GOMAXPROCS(runtime.NumCPU()) var tasks []task.Task tasks = make([]task.Task, 100) mess := models.Message{ ToUser: "oBv9cuLU5zyI27CtzI4VhV6Xabms", TemplateId: "UXb6s5dahNC5Zt-xQIxbLJG1BdP8mP73LGLhNXl68J8", Url: "http://baidu.com", Data: models.Data{ First: models.Raw{"xxx", "#173177"}, Subject: models.Raw{"xxx", "#173177"}, Sender: models.Raw{"xxx", "#173177"}, Remark: models.Raw{"xxx", "#173177"}}} task := task.TemplateTask{} task.SetTask(mess) for i := 0; i < 100; i++ { tasks[i] = &task } utils.NewPush(tasks).SetTaskType(enum.TASK_TYPE_TEMPLATE).SetRetries(4).SetBufferNum(10).Add("45 * * * * *") utils.StartCron() }
-
Add方法里面填写的是执行的时间
- (“10 *”) 表示每分钟的第十秒钟执行一次。
- (“@hourly”) 每小时执行一次
- 具体请参照 https://github.com/robfig/cron/blob/master/doc.go
- 本推送服务的计划任务是由 https://github.com/robfig/cron 实现的。
Run
- 很简单,当你组装好所有的task以后,直接运行一句话就可以了。
-
utils.NewPush(tasks).SetTaskType(enum.TASK_TYPE_TEMPLATE).SetRetries(4).SetBufferNum(10).Add("45 * * * * *")
-
utils.StartCron()
Contributor
- HundredLee https://github.com/hundredlee
- Cospotato https://github.com/cospotato
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 高性能监控系统 WGCLOUD 更新,重构告警消息推送机制
- iOS 推送通知及推送扩展
- 安卓统一推送联盟明日开启推送通道测试
- 《Web 推送通知》系列翻译 | 第五篇:使用 Web 推送库发送消息 && 第六篇:Web 推送协议
- 推送系统从0到1(七):推送用户画像建立
- 推送系统从0到1(八):个性化精准推送的实现
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Web Design for ROI
Lance Loveday、Sandra Niehaus / New Riders Press / 2007-10-27 / USD 39.99
Your web site is a business--design it like one. Billions of dollars in spending decisions are influenced by web sites. So why aren't businesses laser-focused on designing their sites to maximize thei......一起来看看 《Web Design for ROI》 这本书的介绍吧!