gpt4 book ai didi

java - 管道中的条件执行处理程序

转载 作者:行者123 更新时间:2023-11-29 03:37:47 24 4
gpt4 key购买 nike

我正在开发的服务器根据从客户端收到的消息执行不同的任务,有些任务非常简单,需要很少的时间来执行,但其他任务可能需要一段时间。

将 ExecutionHandler 添加到管道似乎是复杂任务的一个很好的解决方案,但我想避免线程化简单任务。

我的管道是这样的:

pipeline.addLast("decoder", new MessageDecoder());
pipeline.addLast("encoder", new MessageEncoder());
pipeline.addLast("executor", this.executionHandler);
pipeline.addLast("handler", new ServerHandler(this.networkingListener));

MessageEncoder 返回一个 Message 对象(用于 decode),它定义了请求的任务。

有没有办法根据解码后的消息跳过执行handler?
这个问题可以概括为:是否有办法确定是否使用下一个处理程序?

谢谢。

最佳答案

您可以扩展它以覆盖其 handlerUpstream() 方法来拦截上游事件并调用 ctx.sendUpstream(e ) 用于其消息符合您的条件的 MessageEvent。所有其他事件都可以由 ExecutionHandler 通过 super.sendUpstream(e) 处理。即:

public class MyExecutionHandler extends ExecutionHandler {
public void handleUpstream(ctx, evt) throws Exception {
if (evt instanceof MessageEvent) {
Object msg = ((MessageEvent) evt).getMessage();
if (msg instanceof ExecutionSkippable) {
ctx.sendUpstream(evt);
return;
}
}

super.handleUpstream(evt);
}
...
}

关于java - 管道中的条件执行处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14593192/

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