Я совершенно новый с netty, я хочу создать TCP-сервер, который выполняет установление связи пользовательского приложения, когда соединение должно быть создано. После установления связи я хочу передать сообщения (ByteBuf) в очередь, чтобы они могли обрабатываться некоторыми другими потоками.Multiple ChannelInboundHandlerAdapter в Netty pipleline
Мой вопрос: могу ли я иметь несколько ChannelInboundHandlerAdapter в конвейере канала? один для протокола подтверждения связи прикладного уровня, а другой для передачи сообщения в очередь. Кроме того, я хочу знать, как сообщения проходят по конвейеру. Если сообщение получено у одного обработчика (или декодера/кодировщика), как оно передается другому обработчику.
В частности, если я изменил EchoServer с here и добавлю другой ChannelInboundHandlerAdapter, обработчик эхо-сервера перестанет получать какие-либо сообщения.
ServerBootstrap b = new ServerBootstrap();
b.group(group)
.channel(NioServerSocketChannel.class)
.localAddress(new InetSocketAddress(port))
.childHandler(new ChannelInitializer<SocketChannel>() {
@Override
public void initChannel(SocketChannel ch)
throws Exception {
ch.pipeline().addLast(new ChannelInboundHandlerAdapter() {
@Override
public void channelRead(ChannelHandlerContext ctx,
Object msg) {
}
});
ch.pipeline().addLast(
new EchoServerHandler());
}
});
Моя логика: есть 2 ChannelInboundHandlerAdapter тогдашних делать рукопожатие с первым обработчиком и отбрасывать пакеты, если они не соответствуют критериям рукопожатия, а затем передавать сообщения в очередь через второй ChannelInboundHandlerAdapter. Правильно ли моя логика? Если не так, как это должно быть?
спасибо.
Я до сих пор есть некоторые проблемы:. 'ch.pipeline() addLast (новый SimpleChannelInboundHandler
попробуйте не вызывать 'finally {in.release()}' посмотреть эту тему http://stackoverflow.com/questions/23419433/netty-hello-world-example-not-working –