安装
docker pull zookeeper
docker run -d -p 2181:2181 --name zk zookeeper
服务提供者
创建module
cloud-provider-payment8004
cloud-provider-payment8005
依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--springboot整合zookeeper客户端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
配置文件
server:
port: 8005
spring:
application:
name: cloud-provider-payment
cloud:
zookeeper:
#zokeeper地址与端口
connect-string: xx.xx.xx.xx:2181
controller
@RestController
public class PaymentController {
@Value("${server.port}")
private String port;
@GetMapping("/payment/zk")
public String payment(){
return "springcloud with zookeeper:"+port+"\t"+ UUID.randomUUID().toString();
}
}
启动类
@SpringBootApplication
@EnableDiscoveryClient
public class PaymentMain8005 {
public static void main(String[] args) {
SpringApplication.run(PaymentMain8005.class,args);
}
}
服务消费者
创建module
cloud-consymerzk-order80
依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
配置文件
server:
port: 80
spring:
application:
name: cloud-consumer-order
cloud:
zookeeper:
connect-string: xx.xx.xx.xx:2181
config
@Configuration
public class ApplicationContextConfig {
/**
*使用@LoadBalanced注解赋予RestTemplate负载均衡的能力
*/
@Bean
@LoadBalanced
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
controller
@RestController
public class OrderZkController {
@Resource
private RestTemplate restTemplate;
private static final String INVOKE_URL="http://cloud-provider-payment";
@GetMapping("/consumer/payment/zk")
public String paymentInfo(){
return restTemplate.getForObject(INVOKE_URL+"/payment/zk",String.class);
}
}
启动类
@SpringBootApplication
@EnableDiscoveryClient
public class OrderZkMain80 {
public static void main(String[] args) {
SpringApplication.run(OrderZkMain80.class,args);
}
}