public boolean start(ProcessResult procResult) {
        if (!this.senderStatus.compareAndSet(
                SENDER_STATUS_UNINITIALIZED, SENDER_STATUS_INITIALIZING)) {
            return procResult.setSuccess();
        }
        // start metric holder
        if (!this.metricHolder.start(procResult)) {
            return false;
        }
        // start client manager
        if (!this.clientMgr.start(procResult)) {
            return false;
        }
        // query meta info from manager
        if (!this.configManager.doProxyEntryQueryWork(procResult)) {
            this.clientMgr.stop();
            String errInfo = "queryCode=" + procResult.getErrCode()
                    + ", detail=" + procResult.getErrMsg();
            return procResult.setFailResult(ErrorCode.FETCH_PROXY_META_FAILURE, errInfo);
        }
        if (this.baseConfig.isEnableReportEncrypt()
                && !this.configManager.doEncryptConfigEntryQueryWork(procResult)) {
            this.clientMgr.stop();
            String errInfo = "queryCode=" + procResult.getErrCode()
                    + ", detail=" + procResult.getErrMsg();
            return procResult.setFailResult(ErrorCode.FETCH_ENCRYPT_META_FAILURE, errInfo);
        }
        // start configure manager
        this.configManager.start();
        this.senderStatus.set(SENDER_STATUS_STARTED);
        logger.info("Sender({}) instance started!", senderId);
        return procResult.setSuccess();
    }
Base Sender class:

Used to manage Sender metadata information, including Sender ID,
 status, network interaction, metadata query object, and
 Proxy node metadata information obtained from Manager, etc.
inlong-sdk/dataproxy-sdk/src/main/java/org/apache/inlong/sdk/dataproxy/sender/BaseSender.java