我正在构建一个由Redis支持的PUB/SUB系统。
我有一个发布者和大量的订阅者。订阅者不太可靠,他们随时可能失去连接,并需要能够从丢失的连接中“恢复”。
然而,有一个细节:我希望我的后备队列在某个数字上被限制,这意味着故障的订阅者应该只能恢复最多N条消息。
最简单的解决方案是:
1. 发布者发布消息X 2. X被推送到列表中:RPUSH列表消息 3. 消息被编码以包括其在列表中的索引 4. 消息被发布给消费者(嵌入了索引):PUBLISH通道编码
如果消费者需要重新建立连接:
1. 它原子地向Redis请求它已经拥有的索引之后列表中所有的值,并执行PSUBSCRIBE
到目前为止我们都很好。
我的重要问题是,如果我想将后备队列限制为N项,有没有办法保持不断增长的索引和列表中的限制后备?
我有一个发布者和大量的订阅者。订阅者不太可靠,他们随时可能失去连接,并需要能够从丢失的连接中“恢复”。
然而,有一个细节:我希望我的后备队列在某个数字上被限制,这意味着故障的订阅者应该只能恢复最多N条消息。
最简单的解决方案是:
1. 发布者发布消息X 2. X被推送到列表中:RPUSH列表消息 3. 消息被编码以包括其在列表中的索引 4. 消息被发布给消费者(嵌入了索引):PUBLISH通道编码
如果消费者需要重新建立连接:
1. 它原子地向Redis请求它已经拥有的索引之后列表中所有的值,并执行PSUBSCRIBE
到目前为止我们都很好。
我的重要问题是,如果我想将后备队列限制为N项,有没有办法保持不断增长的索引和列表中的限制后备?