我是一名
RabbitMQ
用户,正在探索Redis
,并且有两个关于发布/订阅机制的问题
我可以向系统发布消息,让每个客户端(消费者)删除其他客户端的条目吗?我想发布 100 个任务,但每个任务只能由 1 个订阅者处理。
AFAIK,默认情况下,所有消息始终广播/发布给所有客户端。如果一个客户端需要 1 秒来处理消息,而另一个客户端需要 1 分钟,该怎么办?这里的限制是什么?某些消息会在某个时候被丢弃吗?
非常感谢!
1)这不是发布/订阅的工作原理。 Publish 不关心也不知道是否被接收,它只是发布一条消息。每个订阅的订阅者都会收到它,你无法阻止它
2)由您来处理客户端逻辑。
从听起来来看,redis pub/sub 可能不是您正在寻找的系统/模式。您应该特别研究
zeromq
、push
和 pull
套接字,它们不是发布消息,而是一次将消息推送到特定套接字。如果您阅读了入门文档,其中解释了许多模式,并且某些模式适用于您的特定情况。
您可以使用 Redis 列表在消费者中弹出数据。