大纲(未完成)
基于golang+emqtt+rabbitmq实现简易的延时任务中间件
常见的延时任务需要的场景还是蛮多的, 经典的30分钟未付款订单定时取消等等
 我选择mqtt主要是因为当前业务中已经有mqtt,相对来说mqtt比http任务建立的方式更适合分布式场景,不需要去请求固定的域名。
实现逻辑
- 接收mqtt定时任务消息
 - 接收到消息之后将消息加入到rabbitmq中
 - 读取rabbitmq队列中的任务
 - 创建一个相对应的过期时间的死信队列,并且将消息投递到其中
 - 接受rabbitmq中专门接收死信队列中到期的任务
 - 回调任务
 - 其余需要处理的内容 
  
- 使用supervisor部署
 - 接收的内容格式错误或者无法解析
 - 回调的时候错误处理
 - 日志处理
 
 
参考内容
- amqp文档
 - emqtt文档