@MikeMirzayanov

Pub/Sub с персистентными сообщениями?

Есть ли готовое решение? Если нет, то как в деталях лучше сделать свое? Нужна такая сервер-клиент вещь: в сервер на канал можно публиковать сообщения, а клиентская javascript-библиотека подписывается на канал и получает эти сообщения. Конечно, все должно быть типа comet и realtime по типу socket.io или nginx push stream module.



Решение должно поддерживать персистентность в таких смыслах: клиент обязательно получает сообщение n-1 перед сообщением n. Сообщение вообще может быть опубликовано, когда клиент не подключен. Подключится – получит все опубликованные сообщения (те, что еще не получал). Как появится новое – получит и его. Сервер можно гасить и поднимать, сообщения пропадать не должны.



Ожидаемое количество клиентов – сотни-тысячи.
  • Вопрос задан
  • 3308 просмотров
Пригласить эксперта
Ответы на вопрос 3
Учитывая «Подключится – получит все опубликованные сообщения» и «Сервер можно гасить и поднимать» можно с уверенностью сказать, что готовых решений нет.

Я бы использовал sockjs + redis со своей логикой.
Ответ написан
Комментировать
@kastigar
Может вам подойдёт Akka? Насколько я знаю для очередей сообщений можно указывать storage (уже есть немало адаптеров). Заодно и более-менне лёгкую масштабируемость получить с помощью akka-remote. Но назвать это 100% готовым решением трудно. Да и важно какого рода вам pub/sub нужен, под одни задачи akka даже лучше будет, под другие вообще не подойдёт.
Есть ещё vert.x. С реалтаймом там всё хорошо, а вот с персистентностью — не в курсе. Под vert.x есть разные модули, не удивлюсь если уже реализовано, но придётся поискать или поспрашивать в их коммьюнити.
Ответ написан
Комментировать
creage
@creage
В реддите недавно проскакивал holler — посмотрите, может подойдет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы