内容简介: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(八):个性化精准推送的实现
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
PHP for the World Wide Web, Second Edition (Visual QuickStart Gu
Larry Ullman / Peachpit Press / 2004-02-02 / USD 29.99
So you know HTML, even JavaScript, but the idea of learning an actual programming language like PHP terrifies you? Well, stop quaking and get going with this easy task-based guide! Aimed at beginning ......一起来看看 《PHP for the World Wide Web, Second Edition (Visual QuickStart Gu》 这本书的介绍吧!