package me.hao0.antares.client.core; import me.hao0.antares.common.support.Lifecycle; import me.hao0.antares.common.support.Component; import me.hao0.antares.common.util.Systems; import me.hao0.antares.common.util.ZkPaths; import me.hao0.antares.common.zk.ZkClient; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; /** * Author: haolin * Email: haolin.h0@gmail.com */ public class ClientRegister extends Component implements Lifecycle { private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); private final AbstractAntaresClient client; public ClientRegister(AbstractAntaresClient client) { this.client = client; } @Override public void doStart() { scheduler.scheduleAtFixedRate(new Runnable() { @Override public void run() { ZkClient zk = client.getZk(); // register period, prevent client disconnects unexpected String appClientPath = ZkPaths.pathOfAppClient(client.getAppName(), Systems.hostPid()); if (!zk.checkExists(appClientPath)){ zk.createEphemeral(appClientPath); } } }, 1, 10, TimeUnit.SECONDS); } @Override public void doShutdown() { scheduler.shutdown(); } }