java - ChannelInboundHandlerAdapter 即时删除

标签 java netty

我有一个带有多个适配器的 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/

相关文章:

java - 我可以使用另一个应用程序 B 访问应用程序 A 的内部存储器吗?

java - AppEngine 数据存储 : "Object with id ... is managed by a different Object Manager"

java - 当我尝试创建客户端时 Redisson 内存泄漏

java - 我的 ByteToMessageDecoder 类中存在内存泄漏

java - ChannelInboundMessageHandlerAdapter 找不到符号

scala - 在Scala中使用Netty

java - 如何生成具有外键属性的通用 CriteriaQuery?

java - 导入一个文件(MultipartFile)及过程-Java/Grails

Java 的类加载器与 jars-within-jars

netty - Micronaut Data with R2DBC 是不是比经典的 “one thread per connection” 模型 Micronaut Data JDBC 更具可扩展性的方法