通过BRPop命令, 我们可以阻塞的等待读取一个列表的最右侧元素.
所以消费者例程无限的阻塞等待消息
for { if messSlice, err = service.BRPop(code.RRequestPortalMess, 0); err != nil { global.Logger.Errorf("从Redis读取Request Portal消息失败:%v", err) continue } // 说明读取到的消息不对 if len(messSlice) != 2 { continue } // redis返回的消息的索引1的数据是消息本身 mess = messSlice[1] }
生产者例程可以直接通过LPush方法推送消息到列表的最左侧
发表回复