可以查询pubsub系统中已经消耗的旧消息吗?

问题描述 投票:0回答:2

我正在建立一个打牌的系统,我决定用SSE的pubsub系统来保持客户端的更新。我面临的一个问题是如何把消息保留下来,以便以后查询。一个用例是一个玩家在游戏中加入了一张桌子。我想从当前牌局中获取所有事件,并为该用户重放。

我目前使用的是redis的pubsub,但这些消息完全是短暂的。我对rabbitMQ进行了一些研究,似乎也是这样。Kafka好像有一些重播功能?不过我不知道它是否像我想要的那样细化。

期待我的pubsub层的持久性是否合理?或者我应该把逻辑分开?我可以让一个消费者运行,只是为了获取事件并存储它们。但这似乎太重了,失败的机会太多。

我还想查询旧事件中玩家的统计数据,以及所打的牌。不过速度不是这些查询的因素。

apache-kafka redis rabbitmq publish-subscribe
2个回答
1
投票

我不知道有哪个pubsub消息分发器支持消息的持久化。

运行一个消费者,将消息保存在一个持久化的存储中是一个有效的解决方案。但我认为对于你的用例,可能值得使用流来代替。这两个版本都支持 卡夫卡redis.


1
投票

看看Redis Streams,从v5开始它就是Redis的一部分。

Redis PubSub和Redis Stream的主要区别是什么?

它会把你的消息持久化。使用消费者组,消费者可以在流的不同偏移处

https:/redis.iotopicsstreams-intro。

© www.soinside.com 2019 - 2024. All rights reserved.