Можете ли вы запросить старые сообщения, уже использованные в системе pub / sub? - PullRequest
0 голосов
/ 09 мая 2020

Я создаю систему для игры в карты, и я выбрал систему pub / sub, использующую SSE, чтобы обновлять клиентов. Проблема, с которой я столкнулся, - это хранение сообщений для последующего запроса. Один вариант использования - игрок присоединяется к столу в середине игры. Я хотел бы получить все события из текущей руки и воспроизвести их для этого пользователя.

В настоящее время я использую pub / sub redis, но сообщения полностью эфемерны. Я немного покопался в rabbitMQ, и, похоже, это тоже так. Кажется, у Kafka есть функция воспроизведения? Однако я не могу сказать, насколько детализирован он, как мне бы хотелось.

Разумно ли ожидать стойкости от моего уровня pub / sub? Или надо логи c разделить? Я мог бы запустить потребителя только для того, чтобы принимать события и сохранять их. Однако это просто кажется тяжелым, слишком много возможностей для неудачи.

Я также хотел бы запросить статистику по игрокам и сыгранным картам в старых событиях. Однако скорость не имеет значения для этих запросов.

Ответы [ 2 ]

1 голос
/ 10 мая 2020

Взгляните на Redis Streams, он является частью Redis начиная с v5.

Каковы основные различия между Redis Pub / Sub и Redis Stream?

Это сохранит ваши сообщения. Используя группы потребителей, потребители могут находиться на разных смещениях потока

https://redis.io/topics/streams-intro

1 голос
/ 09 мая 2020

Я не знаю какого-либо распространителя сообщений pub / sub, который поддерживает постоянство сообщений.

Запуск потребителя, который будет сохранять сообщения в постоянном хранилище, является допустимым решением. Но я думаю, что для вашего варианта использования может быть лучше использовать потоки. Он поддерживается как Kafka , так и redis .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...