@Override public void start() { if (serverState == ServerState.STARTING || serverState == ServerState.STARTED) { LOG.warn("Already at work!"); return; } serverState = ServerState.STARTING; client.start(); leaderSelector.start(); serverState = ServerState.STARTED; }
/** Start the registration of the {@link #candidate} for leader election. */ @Override public synchronized void start() { if (!running) { if (client.getState() != CuratorFrameworkState.STARTED) { // we want to do curator start here because it needs to // be started before leader selector and it gets a little // complicated to control ordering via beans so that // curator is fully started. client.start(); } leaderSelector = new LeaderSelector(client, buildLeaderPath(), new LeaderListener()); leaderSelector.setId(candidate.getId()); leaderSelector.autoRequeue(); leaderSelector.start(); running = true; } }
@Test public void masterSelect2() { RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3); CuratorFramework client = CuratorFrameworkFactory.builder() .connectString("anders1:2181,anders2:2181,anders3:2181") .namespace("anders_test") .retryPolicy(retryPolicy) .connectionTimeoutMs(5000) .sessionTimeoutMs(5000) .build(); client.start(); LeaderSelector leaderSelector = new LeaderSelector( client, "/leader_select", new LeaderSelectorListener() { @Override public void stateChanged(CuratorFramework client, ConnectionState newState) { System.out.println(newState.values()); } @Override public void takeLeadership(CuratorFramework client) throws Exception { System.out.println("master2 is selected"); } }); // leaderSelector.autoRequeue(); leaderSelector.start(); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } }
public void start() throws IOException { leaderSelector.start(); }