golang实现rabbitmq之work模式
上一篇介绍了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模式就也成功了。

