我正在研究redis SMQ持久性。我的问题是,当发布者发布消息时,消费者突然停止了。当消费者再次连接时,是否可以从已停止的位置订阅消息?
否 - Redis的Pub / Sub没有持久性,一旦消息发布,它就只发送给连接的订阅客户端。之后,消息永远消失了。
使用标准的Pub / Sub,您可以使用Lua脚本来保留您的消息。您需要检查通道上是否有监听器。如果没有,则在redis上使用频道密钥存储您的消息。当用户回来时,它根据频道密钥检查他是否有任何东西。第二种选择是使用Redis Stream。检查这个gist。
Plz使用2个redis连接:1个pubsub,第二个 - LPOP / RPOP