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()
    }
}

 

posted @ 2019-11-21 16:52  zmlgo  阅读(655)  评论(0)    收藏  举报