pom.xml
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-x-discovery</artifactId>
<version>2.12.0</version>
</dependency>
-----------------------------
具体的代码如下:
package com.qbsea.myspringbootb.modules.client;
import java.util.Collection;
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.web.client.RestTemplate;
public class Consumer {
public static void main(String[] args) throws Exception {
//连接zk信息
CuratorFramework client = CuratorFrameworkFactory.newClient("10.17.5.34:2181", new RetryOneTime(1000));//参数2代表重试的策略
client.start();
client.blockUntilConnected();//先启动 直到他连上为止
//服务发现关联client的zk
ServiceDiscovery<Object> serviceDiscovery = ServiceDiscoveryBuilder
.builder(Object.class)
.client(client)
.basePath("/soa")
.build();
Collection<ServiceInstance<Object>> list= serviceDiscovery.queryForInstances("product");
StringBuilder baseUrl = new StringBuilder();
baseUrl.append("http://");
System.out.println(list.size());
list.stream().forEach(item ->{
System.out.println(item.getAddress());
System.out.println(item.getPort());
baseUrl.append(item.getAddress());
baseUrl.append(":");
baseUrl.append(item.getPort());
});
RestTemplate rt = new RestTemplate();
String body = rt.getForObject(baseUrl+"/mycontroller/product/userId",String.class);
System.out.println(body);
}
}