Я разрабатываю приложение, в котором нам нужно обрабатывать 160 тыс. Одновременных пользователей, которые подключены к бэкэнду через websocket
соединение.
Мы решили использовать реализацию spring websocket
и RabbitMQ
в качестве посредника сообщений.
В нашем приложении каждый пользователь должен подписаться на свою очередь /exchange/amq.direct/update
, а также на другую очередь, где другие пользователи могут потенциально подписаться на /topic/someUniqueName
.
В нашем первом тесте производительностимы применили наивный подход, при котором каждый пользователь подписывается на две новые очереди.
При выполнении теста RabbitMQ
молча умирает, когда одновременно подключено около 800 пользователей, поэтому активно около 1600 очередей (Смотрите график всех объектов RabbitMQ здесь ).
Я читал, однако, что вы должны быть осторожны, открывая множество соединений с RabbitMQ .
Теперь мне интересно, ожидается ли подход , который ожидается Spring Websocket с открытием одногоочередь на пользователя является концептуальной проблемой для систем с высокой нагрузкой или если в моей системе есть другая ошибка.