推荐阅读原文获得最佳体验:使用Go语言实现一个异步任务框架 - Jiajun的编程随想
如何使用Go语言实现一个简单的异步任务框架呢?且听我一一道来。首先我们看一下常见的任务队列的架构:
![4cbbffbdffd95eaa5278ef605252cc1d.png](https://img-blog.csdnimg.cn/img_convert/4cbbffbdffd95eaa5278ef605252cc1d.png)
所以作为一个任务队列,主要有这么几个部分组成:
- Producer,负责把调用者的函数、参数等传入到broker里
- Consumer,负责从broker里取出消息,并且消费,如果有持久化运行结果的需求,还需要进行持久化
- 选择一个Producer和Consumer之间序列化和反序列化的协议
首先我们要定义一下Broker的接口:
type Broker interface {
Acquire(string) *Task
Ack(*Task) bool
Update(*Task)
Enqueue(*Task) string
}
作为一个broker,获取任务,ACK,更新任务状态,入队是基本操作。然后我们要定义一个任务,既然是异步任务队列 嘛,这是自然的: