2021-01-22 07:40:02 +00:00
|
|
|
package io.github.ehlxr.did;
|
2018-08-14 07:21:56 +00:00
|
|
|
|
2021-01-22 07:40:02 +00:00
|
|
|
import io.github.ehlxr.did.common.Constants;
|
|
|
|
import io.github.ehlxr.did.core.SnowFlake;
|
|
|
|
import io.github.ehlxr.did.server.Server;
|
|
|
|
import io.github.ehlxr.did.server.http.HttpServer;
|
|
|
|
import io.github.ehlxr.did.server.sdk.SdkServer;
|
2018-08-14 07:21:56 +00:00
|
|
|
import org.slf4j.Logger;
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
2021-01-19 12:28:04 +00:00
|
|
|
import java.util.Arrays;
|
|
|
|
|
2018-08-14 07:21:56 +00:00
|
|
|
/**
|
|
|
|
* @author ehlxr
|
|
|
|
*/
|
|
|
|
public class ServerStarter {
|
|
|
|
private static final Logger logger = LoggerFactory.getLogger(ServerStarter.class);
|
|
|
|
|
|
|
|
public static void main(String[] args) {
|
|
|
|
long datacenterId = Constants.DATACENTER_ID;
|
2018-08-14 10:37:34 +00:00
|
|
|
long machineId = Constants.MACHINES_ID;
|
2018-08-14 07:21:56 +00:00
|
|
|
|
|
|
|
if (args != null && args.length == 2) {
|
2021-01-18 08:17:14 +00:00
|
|
|
datacenterId = Long.parseLong(args[0]);
|
|
|
|
machineId = Long.parseLong(args[1]);
|
2018-08-14 07:21:56 +00:00
|
|
|
}
|
|
|
|
|
2021-01-18 08:17:14 +00:00
|
|
|
datacenterId = "".equals(Constants.getEnv("DATACENTER_ID")) ? datacenterId : Long.parseLong(Constants.getEnv("DATACENTER_ID"));
|
|
|
|
machineId = "".equals(Constants.getEnv("MACHINES_ID")) ? machineId : Long.parseLong(Constants.getEnv("MACHINES_ID"));
|
2018-08-14 07:21:56 +00:00
|
|
|
logger.info("SnowFlake datacenterId is: {}, machineId is: {}", datacenterId, machineId);
|
|
|
|
|
2021-01-27 03:47:09 +00:00
|
|
|
final SnowFlake snowFlake = SnowFlake.newBuilder().datacenterId(datacenterId).machineId(machineId).build();
|
2018-08-14 07:21:56 +00:00
|
|
|
|
|
|
|
// 启动 Http 服务器
|
2021-01-27 03:47:09 +00:00
|
|
|
final Server httpServer = HttpServer.newBuilder().snowFlake(snowFlake).build();
|
2018-08-14 07:21:56 +00:00
|
|
|
httpServer.start();
|
|
|
|
|
|
|
|
// 启动 Sdk 服务器
|
2021-01-27 03:47:09 +00:00
|
|
|
final Server sdkServer = SdkServer.newBuilder().snowFlake(snowFlake).build();
|
2018-08-14 07:21:56 +00:00
|
|
|
sdkServer.start();
|
|
|
|
|
2021-01-19 12:28:04 +00:00
|
|
|
Runtime.getRuntime().addShutdownHook(new Thread(() ->
|
2021-01-23 11:46:00 +00:00
|
|
|
Arrays.stream(new Server[]{httpServer, sdkServer})
|
|
|
|
// 并行 shutdown server
|
|
|
|
.parallel()
|
|
|
|
.forEach(Server::shutdown))
|
|
|
|
);
|
2018-08-14 07:21:56 +00:00
|
|
|
}
|
|
|
|
}
|