老师您好 我看您的视频中讲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安全
}


0
0

877286291

2020-08-23

一直等待消息,可以看下golang基础课对channel的讲解

0
2
Cap
回复
secrethaha
是分开的
2020-08-28
共2条回复

全流程开发 GO实战电商网站高并发秒杀系统

运用架构设计与系统化思维,从容应对不同流量等级的“秒杀”场景

1462 学习 · 443 问题

查看课程