Рабочая группа Netty многопоточности не работает - PullRequest
0 голосов
/ 16 июня 2020

На основании документации https://netty.io/4.1/api/io/netty/channel/ChannelPipeline.html:

// Сообщаем конвейеру запустить методы обработчика событий MyBusinessLogicHandler // в другом потоке, чем поток ввода-вывода, чтобы поток ввода-вывода не был заблокирован // трудоемкая задача. // Если ваша бизнес-логия c полностью асинхронна или завершается очень быстро, вы не // нужно указать группу. pipeline.addLast (group, "handler", new MyBusinessLogicHandler ());

это должно обеспечить многопоточность для обработчика. Но на самом деле это не так, проверьте реализованный пример: https://github.com/oleg-sta/NettyExample/blob/master/src/main/java/com/example/netty/Main.java В этом примере HelloServerHandler получает сообщения одно за другим, почему workerGroup не работает?

1 Ответ

1 голос
/ 18 июня 2020

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

...