Что происходит с каналами, когда канал MemoryAwareThreadPoolExecutor или общий порог достигнут? MemoryAwareThreadPoolExecutor установлен в ExecutionHandler, который находится на каждом конвейере перед обработчиком ввода-вывода.Что происходит, когда достигается общий порог MemoryAwareThreadPoolExecutor?
Мое текущее состояние информации:
я нашел: channel.setReadable(false)
называется. Это означает, что все операции чтения на всех каналах прекращены, не так ли? Таким образом, входящие данные не будут доставлены ни в какой трубопровод, не так ли? Когда я понял, вы должны делить свой код в конце конвейера на неблокирующий бизнес-обработчик и блокирующий бизнес-обработчик с обработчиком выполнения до блокировки. Пример: -> Декодер, Encode, NonBlockingHandler, ExecutionHandler, I/O-Handler
Вот где я думаю, что было бы лучше получить сообщения как минимум до последнего обработчика перед обработчиком выполнения. Если я прав, тогда сообщения, которые не должны обрабатываться обработчиком ввода-вывода, не будут попадать в NonBlockingHandler, пока пул потоков обработчика выполнения не станет ниже порога.
Я признаю, что это не гарантирует выполнение сообщений в полученном порядке на канал. Но давайте просто предположим, что это не обязательно.
С наилучшими пожеланиями и приветствия Netty!
спасибо! – Martin