模式图
场景
我们将创建一个工作队列(Work Queue),它会发送一些耗时的任务给多个工作者(Worker)。
工作队列(又称:任务队列——Task Queues)是为了避免等待一些占用大量资源、时间的操作。当我们把任务(Task)当作消息发送到队列中,一个运行在后台的工作者(worker)进程就会取出任务然后处理。当你运行多个工作者(workers),任务就会在它们之间共享。
当生产者生产速度大于消费者消费速度,将任务分发给多个消费者,提高系统处理任务能力,起到了负载的作用。
实现
work模式和simple模式相比,简单情况下,只是多了消费者。
生产者
package mainimport ("fmt""github.com/WenkeZhou/flash-sale/pkg/rabbitmq""strconv""time")func main() {rmq := rabbitmq.NewRabbitMQSimple("simple_work_queue")for i:=1; i<=100; i++ {rmq.PublishSimple("message:" + strconv.Itoa(i))time.Sleep(1 * time.Second)fmt.Println(i)}}
消费者
package mainimport ("github.com/WenkeZhou/flash-sale/pkg/rabbitmq")func main() {rmq := rabbitmq.NewRabbitMQSimple("simple_work_queue")rmq.ConsumeSimple()}
