<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>4.2.0</version>
</dependency>
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.RetryNTimes;
import org.apache.curator.x.discovery.ServiceDiscovery;
import org.apache.curator.x.discovery.ServiceDiscoveryBuilder;
import org.apache.curator.x.discovery.ServiceInstance;
import org.apache.curator.x.discovery.UriSpec;
public class ServiceDiscoveryExample {
private static final String ZOOKEEPER_ADDRESS = "localhost:2181";
private static final String SERVICE_NAME = "myService";
public static void main(String[] args) {
CuratorFramework client = CuratorFrameworkFactory.newClient(ZOOKEEPER_ADDRESS, new RetryNTimes(5, 1000));
client.start();
ServiceDiscovery serviceDiscovery = ServiceDiscoveryBuilder.builder(Void.class)
.basePath("/services/" + SERVICE_NAME)
.client(client)
.build();
try {
serviceDiscovery.start();
ServiceInstance<Void> instance = ServiceInstance.builder()
.name(SERVICE_NAME)
.uriSpec(new UriSpec("{scheme}://{address}:{port}"))
.address("localhost")
.port(8080)
.build();
serviceDiscovery.registerService(instance);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
serviceDiscovery.close();
client.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}