`gmq`是基于`redis`提供的特性,使用`go`语言开发的一个简单易用的队列;支持延迟任务,异步任务,超时任务,优先级任务
### 应用场景
- 延迟任务
- 延迟任务,例如用户下订单一直处于未支付状态,半个小时候自动关闭订单
- 异步任务
- 异步任务,一般用于耗时操作,例如群发邮件等批量操作
- 超时任务
- 规定时间内`(TTR)`没有执行完毕或程序被意外中断,则消息重新回到队列再次被消费,一般用于数据比较敏感,不容丢失的
- 优先级任务
- 当多个任务同时产生时,按照任务设定等级优先被消费,例如a,b两种类型的job,优秀消费a,然后再消费b
### gmq流程
![流程图](https://github.com/wuzhc/zcnote/raw/master/images/project/gmq%E6%B5%81%E7%A8%8B%E5%9B%BE.png)
### web监控
`gmq`提供了一个简单web监控平台(后期会提供根据job.Id追踪消息的功能),方便查看当前堆积任务数,默认监听端口为`8000`,例如:http://127.0.0.1:8000, 界面如下:
![监控](https://github.com/wuzhc/zcnote/raw/master/images/project/gmq%E7%9B%91%E6%8E%A7.png)