采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
forever := make(chan bool) //启用协程处理消息 go func() { for d := range msgs { //消息逻辑处理,可以自行设计逻辑 log.Printf("接收到队列消息: %s\n", d.Body) } }() log.Printf(" [*] 等待接收消息") <-forever
没太明白这里为什么要make 一个chann 呢 这里 chann 的作用是什么
可以去掉这部分. 下边写一个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安全
一直等待消息,可以看下golang基础课对channel的讲解
生产者也没用这个channel 啊 消费者等待 有什么用
是分开的
登录后可查看更多问答,登录/注册
运用架构设计与系统化思维,从容应对不同流量等级的“秒杀”场景
1.9k 3
1.7k 4
1.2k 5
1.2k 11
1.2k 8
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号