package tech.powerjob.agent;
|
|
import tech.powerjob.common.RemoteConstant;
|
import tech.powerjob.common.enums.Protocol;
|
import tech.powerjob.worker.PowerJobWorker;
|
import tech.powerjob.worker.common.PowerJobWorkerConfig;
|
import tech.powerjob.worker.common.constants.StoreStrategy;
|
import com.google.common.base.Splitter;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang3.exception.ExceptionUtils;
|
import picocli.CommandLine;
|
import picocli.CommandLine.Command;
|
import picocli.CommandLine.Option;
|
|
/**
|
* powerjob-worker-agent entry
|
*
|
* @author tjq
|
* @since 2020/5/20
|
*/
|
@Slf4j
|
@Command(name = "PowerJobAgent", mixinStandardHelpOptions = true, version = "4.3.0", description = "powerjob-worker agent")
|
public class MainApplication implements Runnable {
|
|
@Option(names = {"-a", "--app"}, description = "worker-agent's name", required = true)
|
private String appName;
|
|
@Option(names = {"-p", "--port"}, description = "transporter working port, not recommended to change")
|
private Integer port = RemoteConstant.DEFAULT_WORKER_PORT;
|
|
@Option(names = {"-o", "--protocol"}, description = "transporter protocol, AKKA or HTTP")
|
private String protocol = Protocol.AKKA.name();
|
|
@Option(names = {"-e", "--persistence"}, description = "storage strategy, DISK or MEMORY")
|
private String storeStrategy = "DISK";
|
|
@Option(names = {"-s", "--server"}, description = "oms-server's address, IP:Port OR domain", required = true)
|
private String server = "localhost:7700";
|
|
@Option(names = {"-l", "--length"}, description = "ProcessResult#msg max length")
|
private int length = 1024;
|
|
@Option(names = {"-t", "--tag"}, description = "worker-agent's tag")
|
private String tag;
|
|
public static void main(String[] args) {
|
CommandLine commandLine = new CommandLine(new MainApplication());
|
commandLine.execute(args);
|
}
|
|
@Override
|
public void run() {
|
|
PowerJobWorkerConfig cfg = new PowerJobWorkerConfig();
|
try {
|
|
cfg.setAppName(appName);
|
cfg.setPort(port);
|
cfg.setServerAddress(Splitter.on(",").splitToList(server));
|
cfg.setStoreStrategy(StoreStrategy.MEMORY.name().equals(storeStrategy) ? StoreStrategy.MEMORY : StoreStrategy.DISK);
|
cfg.setMaxResultLength(length);
|
cfg.setTag(tag);
|
cfg.setProtocol(Protocol.of(protocol));
|
|
PowerJobWorker worker = new PowerJobWorker(cfg);
|
|
worker.init();
|
}catch (Exception e) {
|
log.error("[PowerJobAgent] startup failed by config: {}.", cfg, e);
|
ExceptionUtils.rethrow(e);
|
}
|
}
|
}
|