Я применил обработчик канала для обработки http pipelining. Мой код находится в github: https://github.com/huntc/netty-http-pipeliningПодтверждение подхода к подшивке Netty http
Мой вопрос касается подхода, который я принял, и является ли он разумным в контексте архитектуры Netty.
Когда мой HttpPipeliningHandler получает восходящий HttpRequest, он формирует новое событие сообщения типа OrderedUpstreamMessageEvent. Это событие также является частью моего пакета и сохраняет информацию в отношении запроса, который потребуется при формулировании ответных сообщений.
Когда обработчик канала дальше вверх по течению получает OrderedUpstreamMessageEvent он формирует ответ, генерируя OrderedDownstreamMessageEvent т.да .:
ctx.sendDownstream(new OrderedDownstreamMessageEvent(oue, somemessage));
где
ctx = ChannelHandlerContext instance
oue = OrderedUpstreamMessageEvent instance
somemessage = some message instance to be sent as an http response
Вы также можете сделать больше прикольные вещи как отправить фрагментированные ответы.
Этот подход выглядит разумным? Это, безусловно, работает! Правильно ли/приемлемо преобразовывать события сообщений в обработчике вверх? Очевидно, что если событие сообщения преобразуется снова, то функция конвейерной обработки не будет работать.
Спасибо! Теперь код выполняет синхронизацию. Я должен был более внимательно прочитать javadoc в обработчике ниже по течению! Также вместо этого отключите соединение. –
Мой главный вопрос: правильно или приемлемо преобразовывать события сообщений в обработчике вверх? –