springboot发布一个微服注册到zookeeper
pom.xml
<!-- provider -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-x-discovery-server</artifactId>
<version>2.12.0</version>
</dependency>
容器启动后注册到zookeeper
关于容器启动后 执行程序 详见如下章节
类的demo为
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.RetryOneTime;
import org.apache.curator.x.discovery.ServiceDiscovery;
import org.apache.curator.x.discovery.ServiceDiscoveryBuilder;
import org.apache.curator.x.discovery.ServiceInstance;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
@Component
@Order(value=1)
public class ServiceRegister implements ApplicationRunner {
@Value("${zookeeper.address}")
private String zkAddress;
@Override
public void run(ApplicationArguments args) throws Exception {
//连接zk信息
CuratorFramework client = CuratorFrameworkFactory.newClient(zkAddress, new RetryOneTime(1000));//参数2代表重试的策略
client.start();
client.blockUntilConnected();//先启动 直到他连上为止
//本机信息
ServiceInstance<Object> instance = ServiceInstance.builder().name("product")//本地服务的名称
.address("10.16.65.118")//本地服务的IP
.port(8080).build();//本地服务的端口号
//服务发现关联client的zk
ServiceDiscovery<Object> serviceDiscovery = ServiceDiscoveryBuilder
.builder(Object.class)
.client(client)
.basePath("/soa")
.build();
//服务发现注册本地的信息
serviceDiscovery.registerService(instance);
serviceDiscovery.start();
System.out.println("service register OK;");
}
}