gpt4 book ai didi

java - Netty:如何将对象传递给特定的处理程序?

转载 作者:行者123 更新时间:2023-12-02 11:31:24 26 4
gpt4 key购买 nike

我正在使用 Netty 编写一些 http 服务器。

假设我有这样的东西(在初始化程序中,所有处理程序都扩展 ChannelInboundHandlerAdapter):

// REST API handlers
pipeline.addLast(new CreateEventHandler());
pipeline.addLast(new GetEventHandler());
pipeline.addLast(new UpdateEventHandler());
pipeline.addLast("delete", new DeleteEventHandler());

我的问题是我可以将一个对象传递给这样的特定处理程序(例如,在 CreateEventHandler 中的某个位置):

ChannelInboundHandlerAdapter h = (ChannelInboundHandlerAdapter) ctx.pipeline().get("delete");
h.channelRead(ctx, msg);

如果是的话,这是一个好方法吗?或者我肯定会得到一些开销或错误?或者我必须通过管道中的所有处理程序传递一个对象?

谢谢。

最佳答案

这不是设计应用程序的好方法。 Netty ChannelPipeline定义了处理程序的序列,每个处理程序都可以转换通过它的数据。本质上,传入/传出数据通过管道中的所有入站/出站处理程序传递。它不是您似乎正在寻找的“条件调度”机制。

看起来您正在构建 REST 服务;您所需要的只是一个通用的 HTTP 管道和一个单个入站处理程序,该处理程序将根据 HTTP 方法分派(dispatch)到您的应用程序代码。这意味着示例中的任何处理程序(GetEventHandler 等)都不需要扩展 ChannelInboundHandlerAdapter - 它们可以是没有 Netty 特定代码的简单 Java 类。这也将使您能够很好地分离协议(protocol)和业务逻辑。

关于java - Netty:如何将对象传递给特定的处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49278497/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com