Netty,从非Netty线程

时间:2016-08-17 15:54:13

标签: java multithreading events netty

我正在使用谷歌protobufs设计一个使用Netty的服务器。客户端连接到服务器,发送在非Netty工作线程中处理的请求(此单个工作线程处理来自所有客户端的请求),当处理完成时,我想将响应发送回原始客户端。

我想知道发送回复消息的最佳方式。

一种选择是让我的Netty通道处理程序实现一个回调接口,工作者线程可以在完成处理请求时调用,并在此回调方法中执行ChannelHandlerContext.write(...)

但这会导致多核CPU利用率低,因为请求的处理和对所有客户端的响应的protobufs的编码都将在一个单独的线程中执行。

有没有办法在我的Netty频道处理程序回调中将用户定义的事件发布到Netty线程,然后接收此事件并在Netty线程中对传出消息执行protobuf编码?

我尝试在我的处理程序中使用ctx.channel().pipeline().fireUserEventTriggered并实现userEventTriggered(ChannelHandlerContext ctx, Object evt),但我无法让它工作。用户事件机制是否用于此目的?如果是,是否有人有一些示例代码?

0 个答案:

没有答案