java - 如何跳过某些处理程序并直接转到netty中的特定处理程序

标签 java proxy netty

假设我在 netty 管道中有这些处理程序流:

UpHandler1 -> UpHandler2 -> UpHandler3 -> ... -> DownHandler1 -> DownHandler2 -> DownHandler3

基于某些条件(即已经找到对请求的响应而不进行进一步处理),在我的 UpHandler2 中,是否可以直接转到 DownHandler2 (因此跳过中间的某些上游和下游处理程序)?这是推荐的吗?

最佳答案

您可以使用UpHandler2的ChannelHandlerContext来检索ChannelPipeline。从这里,您可以使用 context(...) 方法之一检索任何 channel 处理程序的 channel 处理程序上下文。然后 Netty 3 的 sendDownstream 或 Netty 4 的 write 将转发到上下文响应的处理程序之后的下一个下游处理程序。实际上,我认为您需要获取 DownHandler1 的 ChannelHandlerContext 并使用它来编写消息。

或者,您可以构建 netty 管道,使 DownHandler2 成为 UpHandler2 的下一个下游处理程序。如果我正确理解了你的管道,那么类似

pipeline.addLast("down3", downhandler3);
pipeline.addLast('up1", uphandler1);
pipeline.addLast("down2", downhandler2);
pipeline.addLast("up2", uphandler2);
pipeline.addLast("down1", downhandler1);
pipeline.addLast("up3", uphandler3);

可能有用。然而,这可能非常脆弱,并且还取决于您的处理逻辑是否允许。

关于java - 如何跳过某些处理程序并直接转到netty中的特定处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20849936/

相关文章:

java - 为什么 Clojure 现在在 JNLP 中失败了?

java - 使用 utf-8 代码页的 Windows 命令行问题

c# - 透明代理在通过 https 访问时出现 SSL 错误

java - 如何使用netty 4.0在连接变为非 Activity 状态后重新连接

Java netty客户端无法向服务器发送消息,但telnet到服务器正常

Netty 的 `sync` 与 `syncUninterruptibly`

java - 从 URL 解析字符串值

java - JPA persistence.xml - 从引用的库添加 DAO

java - 远程和动态代理

node.js - npm 设置自动配置脚本