老师您好 我看您的视频中讲Simple 消费者的时候有如下代码
来源:3-5 RabbitMQ工作模式---Simple模式(中)
secrethaha
2020-08-22
forever := make(chan bool)
//启用协程处理消息
go func() {
for d := range msgs {
//消息逻辑处理,可以自行设计逻辑
log.Printf("接收到队列消息: %s\n", d.Body)
}
}()
log.Printf(" [*] 等待接收消息")
<-forever
没太明白这里为什么要make 一个chann 呢 这里 chann 的作用是什么
写回答
2回答
-
不吃洋葱的小胡子大叔
2023-01-07
可以去掉这部分. 下边写一个time.Sleep(time.Second * 10)也行. 但是10秒后这段代码就结束了.
make一个channel可以造成等待, go fun(){}()那部分代码就可以永远在执行.
或者直接去掉forever和开的goroutine把处理的部分重新包装. 然后在for循环里重新开一个goroutine来执行貌似也可以.
for := range msgs { //实现要处理的逻辑函数 go process(d) } //自定义处理消息的逻辑函数 func process(msg amqp.Delivery) { log.Printf("Receive a message: %s", msg.Body) //使用log可以goroutine安全 }
00 -
877286291
2020-08-23
一直等待消息,可以看下golang基础课对channel的讲解
022020-08-28
相似问题