我们已知的一个或多个channel会注册到一个EventLoop上,这个EventLoop既要监听Channel上的事件,又要处理事件到来后业务逻辑(包括出站逻辑),也就是说Netty在同一个Channel上的handler调用是串行的,如下图,如果业务逻辑比较复杂,就会导致一些简单的事件得不到响应(也有可能是其他channel上的事件)。所以Netty不建议在handler处理复杂的业务逻辑,比如像数据库操作等等。那像这样的耗时逻辑在Netty中该怎么处理呢?

我的想法应该有两种处理方案
使用自定义的线程池,将需要处理的耗时逻辑封装成
task丢到executor pool中,但是我们知道,线程多了并不是好事,会影响吞吐。将这些任务丢到丢到那些空闲的
EventLoop上,这样就能充分利用Netty的线程资源,但是这样的代码该怎么实现,有没有成熟的框架?
慕容森
幕布斯7119047
随时随地看视频慕课网APP
相关分类