Redis Pub/Sub Ack/Nack
Redis Pub/Sub Ack/Nack
RedisPub/Sub中有致谢的概念吗?
例如,当使用 RabbitMQ 时,我可以在不同的机器上有两个工人 运行,当我向队列发布一条消息时,只有一个工人会 ack/nack 它并处理消息。
但是我发现 Redis Pub/Sub,两个工作人员都会处理消息。
考虑这个简单的例子,我在两个不同的 machines/clients:
上有这个 go routine 运行ning
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 routines 都会接收它和 运行 process 函数。
有没有办法实现与 RabbitMQ 类似的行为?例如。第一个确认消息的工作人员将是唯一接收并处理它的人。
RedisPub/Sub中有致谢的概念吗?
例如,当使用 RabbitMQ 时,我可以在不同的机器上有两个工人 运行,当我向队列发布一条消息时,只有一个工人会 ack/nack 它并处理消息。
但是我发现 Redis Pub/Sub,两个工作人员都会处理消息。
考虑这个简单的例子,我在两个不同的 machines/clients:
上有这个 go routine 运行ninggo 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 routines 都会接收它和 运行 process 函数。
有没有办法实现与 RabbitMQ 类似的行为?例如。第一个确认消息的工作人员将是唯一接收并处理它的人。