【发布时间】:2016-09-23 15:40:16
【问题描述】:
我复制了rabbitmq go example,稍作改动进行测试。
Example URL。它工作正常
代码结构:
func main() {
//dial rabbit server
//declare channel/exange/queue
msgs, err := ch.Consume() //typeof(msgs)=<-chan Delivery
forever := make(chan bool)
go func() {
for d := range msgs {
log.Printf("Received a message: %s", d.Body)
}
}()
log.Printf(" [*] Waiting for messages. To exit press CTRL+C")
<-forever
}
但是如果我把一些代码放到一个函数中,比如:
func ListenRabbit() (<-chan Delivery, error) {
//dial rabbit server
//declare channel/exange/queue
msgs, err := ch.Consume() //typeof(msgs)=<-chan Delivery
return msgs, err
}
func main(){
msgs, _ := ListenRabbit()
for d := range msgs {
log.Printf("Received a message: %s", d.Body)
}
}
无法阻止 main() 等待来自服务器的消息。它会立即退出。原始代码和更改代码之间有什么区别吗? 非常感谢!
【问题讨论】: