Redis Pub / Sub中是否有确认的概念?
例如,当使用RabbitMQ时,我可以让两个工作人员在不同的机器上运行,当我向队列发布消息时,只有一个工作人员会确认并处理该消息。
但是我发现Redis Pub / Sub,两个工作人员都会处理这条消息。
考虑这个简单的例子,我在两个不同的机器/客户端上运行这个例程:
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")
两个例程都将接收它并运行过程函数。
有没有办法实现与RabbitMQ类似的行为?例如。第一个接收消息的工作人员将是唯一一个接收消息并处理它的人。