使用Redis实现一个简单的消息队列

通过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方法推送消息到列表的最左侧


评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注