我有一个带有多个适配器的 Netty 管道,其中一些适配器仅适用于第一个到达的消息。这意味着在处理消息后,我想将其转发,然后从管道中删除适配器。我尝试过以下两种方法: 1. super.channelRead(ctx, msg);然后 ctx.pipeline().remove(this); 2. ctx.pipeline().remove(this);然后 super.channelRead(ctx, msg);
它们现在都可以工作,但我不清楚是否有任何区别以及使用它们是否有任何“最佳实践”。 谢谢
最佳答案
这两个选项都很好。唯一的区别是处理程序从管道中删除的时间。在特定情况下,可能会对执行流程产生一些影响。我自己的建议 - 一旦不需要处理程序或它执行了所有必要的操作,就将其删除。
关于java - ChannelInboundHandlerAdapter 即时删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50736658/