rabbitMq并发处理订阅消息的框架流程
//rabbitMQ并发处理订阅队列的框架流程: func Get(handle Handler) { sub := Consume() //在函数中会不断的返回值到chan中 fn := func(m int) { handle(m) } go func() { for d := range sub { go fn(d) //启动协程逐个的去处理接收到的消息 } } } //消费消息的函数 //利用通信来共享数据 func Consume() <-chan int { //do something value := make(chan int) go Do(value) //在此函数中循环去给这个chan赋值 return (<-chan int)(value) } //确保函数一定执行成功 DoNoError(f func() error) { err := f() for err != nil { log.Errorf("%s", err) time.Sleep(3 * time.second) err = f() } }