RabbitMq как брокер веб-сокетов

В настоящее время мы используем эту схему:

Laravel -> RabbitMq -> Exchanges

public, private, presence (type of web-socket channels) -> Queues (web-socket channel name)

-> SocketCluster -> Websockets

Это идеально подходит для наших целей, и у нас есть горизонтальный масштаб. Но это нормально только для каналов с более чем 1 пользователем.

Например, нам нужна система уведомлений через веб-сокет. Итак, в нашей схеме мы должны создать 1 очередь на 1 пользователя и это сбивает с толку... И все очереди будут иметь auto-delete тег и будет durable, Наш проект перегружен, поэтому представьте, что 10 000 пользователей покинут сайт (очередь отключена) одновременно.

Кроме того, я подумал об использовании redis для такого рода каналов. Но redis брокер для SocketCluster не поддерживает redis-cluster(это очень нежелательный способ выписать собственный драйвер с поддержкой кластера), поэтому поддержка горизонтального масштабирования отсутствует.

Может быть, я не понимаю rabbit вообще, и нам нужно изменить нашу схему, или мы можем решить нашу проблему с помощью встроенных ресурсов кролика (Google так много, нет ответов). Или второй способ (redis) единственный, кто делает это правильно.

Заранее спасибо. Даже правильное направление поможет.

0 ответов

Другие вопросы по тегам