微服务SpringCloud配置Zookeeper服务注册与发现
提供者
1.新建SpringCloud微服务moudle-providezk-8004
2.pom文件添加以下依赖:
<!-- SpringBoot整合zookeeper客户端 注意版本冲突,出现版本冲突用下面方式修改版本>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-disvocery</artifactId>
<!-- 先排除自带的zookeeper3.5.3 -->
<exclusions>
<exclusion>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 添加zookeeper3.4.9版本 -->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.9</version>
</dependency>
3.yml配置文件信息如下
# 表示注册到zookeeper服务器的支付服务提供者端口号
server:
port: 8004
spring:
application:
name: cloud-privider-payment
cloud:
zookeeper:
connect-string: 192.168.111.144:2181 #zookeeper机器ip地址
4.启动类添加注解
// 该注解用于向使用consul或者zookeeper作为注册中心时注册服务
@EnableDiscoveryClient
注:zookeeper服务器部署在linux上关闭防火墙以及是否可以ping通
消费者
1.新建SpringCloud微服务moudle-cussumerzk-80
2.pom文件添加以下依赖:
<!-- SpringBoot整合zookeeper客户端 注意版本冲突,出现版本冲突用下面方式修改版本>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-disvocery</artifactId>
<!-- 先排除自带的zookeeper3.5.3 -->
<exclusions>
<exclusion>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 添加zookeeper3.4.9版本 -->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.9</version>
</dependency>
3.yml配置文件信息如下:
# 表示注册到zookeeper服务器的支付服务提供者端口号
server:
port: 80
spring:
application:
name: cloud-consumer-order
cloud:
zookeeper:
connect-string: 192.168.111.144:2181 #zookeeper机器ip地址
4.启动类添加注解
// 该注解用于向使用consul或者zookeeper作为注册中心时注册服务
@EnableDiscoveryClient
5.添加配置类调用提供者
@Configuration
public class ApplicationContextConfig{
@Bean
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
6.新建controller在类中通过RestTemplate 调用提供者
@RestController
public class OrderController{
public static final string INVOKE_URL = " cloud-privider-payment(提供者微服务名)";
@Resource
private RestTemplate restTemplate;
@GetMapping(value = ""/consumer/payment/zk")
public String pay(){
string result = restTemplate.getForObject(INVOKE_URL +"/payment",string.class);
return result;
}
}