SpringCloud(4)使用Zookeeper做为注册中心
1.安装Zookeeper注册中心
安装教程
2.导入Zookeeper客户端依赖
<!--zookeeper client--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zookeeper-discovery</artifactId><version>2.2.3.RELEASE</version></dependency>
3.配置使用zookeeper
先配置yml配置文件
spring:application:name: cloud-payment-servicecloud:zookeeper:#配置zookeeper服务地址connect-string: localhost:2181
server:port: 8014
然后在主启动类上加入@EnableDiscoveryClient注解
@SpringBootApplication
@EnableDiscoveryClient//此注解主要用于zookeeper和consul作为注册中心时注册服务
public class CloudProviderPayment8014Application {public static void main(String[] args) {SpringApplication.run(CloudProviderPayment8014Application.class, args);}}
编写一个控制器类进行测试
@RestController
@Slf4j
@RequestMapping("/payment")
public class PaymentController {@Value("${server.port}")private String serverPort;@GetMapping("/zkpayment")public String zkPayment(){return "Spring Cloud with Zookeeper , server port:"+serverPort;}}
然后开启项目,此时打开zookeeper的bin目录下的zkCli,输入ls / 在输入 ls /services,即可查看注册进zookeeper的所有服务。

注册进zookeeper的服务节点是属于一个临时节点,只要一段时间内没有收到心跳包,就会移除掉这个服务
4.将消费者服务注册进zookeeper
依赖跟刚创建的消费者模块一样,配置文件将项目的端口改成9011,应用名称改成cloud-consumerzk-order,然后新建一个配置类,用于注册bean组件进ioc容器,注册restTemplate进容器,因为还没有使用ribbon,所以需要先用restTemplate进行测试,注意需要加上@LoadBalanced注解开启负载均衡
@Configuration
public class ApplicationContextConfig {@Bean@LoadBalancedpublic RestTemplate restTemplate(){return new RestTemplate();}
}
然后编写控制器类进行测试
@RestController
@Slf4j
@RequestMapping("/consumer/payment")
public class PaymentController {/**要调用的服务地址*/public static final String INVOKE_URL="http://cloud-payment-service";@Autowiredprivate RestTemplate restTemplate;@GetMapping("/zk")public String paymentInfo(){String result=restTemplate.getForObject(INVOKE_URL+"/payment/zkpayment",String.class);return result;}
}
启动消费者项目进行测试,先查看zookeeper是否注册进去消费者服务,可见注册成功

再访问请求地址,可以见到成功调用了提供者的对应服务。

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
