golang实现rabbitmq之work模式

作者: adm 分类: go 发布时间: 2022-07-11

上一篇介绍了golang实现rabbitmq之simple模式当你弄懂了这个最简单的simple模式后也便可以往后看了。后面的四 种模式全部都是基于这个模式上做的优化或者说是修改。第二种模式:work模式。

那么到此,可能就会有同学有疑问了,为什么我的输出结果里要加一个“(或者Work)”呢?因为其实simple模式和work模式其实用的是一套逻辑代码,只是work模式是可以有多个消费者的,work模式起到一个负载均衡的作用。

那么,我们来看一下work模式的发布者:

package main

import (
	"fmt"
	"rabbitmq20181121/RabbitMq"
	"strconv"
	"time"
)

func main() {
	rabbitmq := RabbitMq.NewRabbitMQSimple("duQueueName191224")
	for i := 0; i < 100; i++ {
		rabbitmq.PublishSimple("hello du message" + strconv.Itoa(i) + "---来自work模式")
		time.Sleep(1 * time.Second)
		fmt.Printf("work模式,共产生了%d条消息\n", i)
	}
}

work模式的消费者,建立2个,代码都是一样的:

package main

import "rabbitmq20181121/RabbitMq"

func main() {
	rabbitmq := RabbitMq.NewRabbitMQSimple("duQueueName191224")
	rabbitmq.ConsumeSimple()
}

将work的发布者和两个消费者run起来,会发现:

小杜同学写的Simple(或者Work)模式接收到了消息:hello du message1---来自work模式
小杜同学写的Simple(或者Work)模式接收到了消息:hello du message3---来自work模式
小杜同学写的Simple(或者Work)模式接收到了消息:hello du message5---来自work模式
小杜同学写的Simple(或者Work)模式接收到了消息:hello du message7---来自work模式
小杜同学写的Simple(或者Work)模式接收到了消息:hello du message9---来自work模式
小杜同学写的Simple(或者Work)模式接收到了消息:hello du message11---来自work模式

也就是一个消费者只消费奇数,而另外一个则只消费偶数。那么work模式就也成功了。

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!