Как я могу сказать Spring, чтобы использовать только один поток для каждого подключения веб-сокета? - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть два метода @MessageMapping в контроллере. Один из них выполняет некоторую логику инициализации, а другой обрабатывает сообщения. После создания соединения через веб-сокет клиент вызывает конечную точку инициализации, а затем (почти сразу) два раза конечную точку процессора сообщений.

Насколько я знаю, Spring поддерживает два пула потоков (для входящего и исходящего канала) для распараллеливания выполнения.

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

Как мне сказать Spring, что он должен выделить только один поток для соединения через веб-сокет, чтобы запустить один метод за один раз? Если это невозможно, любые предложения приветствуются.

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

@MessageMapping("/chat/init")
public void initChat(...) { ... }

@MessageMapping("/chat/send")
public void sendMessage(...) { ... }

...