千家信息网

dubbo中CommandExecutor的作用是什么

发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,本篇内容介绍了"dubbo中CommandExecutor的作用是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读
千家信息网最后更新 2025年02月03日dubbo中CommandExecutor的作用是什么

本篇内容介绍了"dubbo中CommandExecutor的作用是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

本文主要研究一下dubbo的CommandExecutor

CommandExecutor

dubbo-2.7.2/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/CommandExecutor.java

public interface CommandExecutor {    /**     * Execute one command and return the execution result     *     * @param commandContext command context     * @return command execution result     * @throws NoSuchCommandException     */    String execute(CommandContext commandContext) throws NoSuchCommandException;}
  • CommandExecutor定义了execute方法,其方法传入CommandContext参数

CommandContext

dubbo-2.7.2/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/CommandContext.java

public class CommandContext {    private String commandName;    private String[] args;    private Channel remote;    private boolean isHttp;    private Object originRequest;    public CommandContext(String commandName) {        this.commandName = commandName;    }    public CommandContext(String commandName, String[] args, boolean isHttp) {        this.commandName = commandName;        this.args = args;        this.isHttp = isHttp;    }    public String getCommandName() {        return commandName;    }    public void setCommandName(String commandName) {        this.commandName = commandName;    }    public String[] getArgs() {        return args;    }    public void setArgs(String[] args) {        this.args = args;    }    public Channel getRemote() {        return remote;    }    public void setRemote(Channel remote) {        this.remote = remote;    }    public boolean isHttp() {        return isHttp;    }    public void setHttp(boolean http) {        isHttp = http;    }    public Object getOriginRequest() {        return originRequest;    }    public void setOriginRequest(Object originRequest) {        this.originRequest = originRequest;    }}
  • CommandContext定义了commandName、args、remote、isHttp、originRequest参数

DefaultCommandExecutor

dubbo-2.7.2/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/DefaultCommandExecutor.java

public class DefaultCommandExecutor implements CommandExecutor {    @Override    public String execute(CommandContext commandContext) throws NoSuchCommandException {        BaseCommand command = null;        try {            command = ExtensionLoader.getExtensionLoader(BaseCommand.class).getExtension(commandContext.getCommandName());        } catch (Throwable throwable) {                //can't find command        }        if (command == null) {            throw new NoSuchCommandException(commandContext.getCommandName());        }        return command.execute(commandContext, commandContext.getArgs());    }}
  • DefaultCommandExecutor实现了CommandExecutor接口,其execute方法会根据commandName通过ExtensionLoader来加载对应的comamnd,然后执行command的execute方法

小结

CommandExecutor定义了execute方法,其方法传入CommandContext参数;CommandContext定义了commandName、args、remote、isHttp、originRequest参数;DefaultCommandExecutor实现了CommandExecutor接口,其execute方法会根据commandName通过ExtensionLoader来加载对应的comamnd,然后执行command的execute方法

"dubbo中CommandExecutor的作用是什么"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

0