采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
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.8k 3
1.6k 4
1.1k 5
1.1k 11
1.1k 8