为了账号安全,请及时绑定邮箱和手机立即绑定

Redis 发布/订阅确认/确认

Redis 发布/订阅确认/确认

Go
哈士奇WWW 2021-11-01 15:43:00
Redis Pub/Sub 中有确认的概念吗?例如,当使用 RabbitMQ 时,我可以让两个工作人员在不同的机器上运行,当我将消息发布到队列时,只有一个工作人员会确认/确认并处理消息。但是我发现使用 Redis Pub/Sub,两个工作人员都会处理消息。考虑这个简单的例子,我在两台不同的机器/客户端上运行了这个 go 例程:go func() {    for {        switch n := pubSubClient.Receive().(type) {        case redis.Message:            process(n.Data)        case redis.Subscription:            if n.Count == 0 {                return            }        case error:            log.Print(n)        }    }}()当我发布消息时:conn.Do("PUBLISH", "tasks", "task A")两个 go 例程都会接收它并运行 process 函数。有没有办法实现与 RabbitMQ 类似的行为?例如,第一个确认消息的工作人员将是唯一一个接收并处理它的工作人员。

3 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

Redis PubSub 更像是一种广播机制。

如果你想要队列,你可以使用BLPOPRPUSH来获得相同的交互。请记住,RabbitMQ 会执行 Redis 中没有的各种其他功能。但是,如果您正在寻找简单的作业调度/请求处理风格,这将工作得很好。


查看完整回答
反对 回复 2021-11-01
?
潇湘沐

TA贡献1816条经验 获得超6个赞

不,Redis 的 PubSub 不保证交付,也不限制可能收到消息的订阅者的数量。


查看完整回答
反对 回复 2021-11-01

添加回答

代码语言

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号