Zookeeper

zookeeper(一般不用)

1.springcloud整合zookeeper(注意必须引入springcloud)

<dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
</dependency>

这里有可能会报错的,原因在于springcloud引入的zookeeper可能和你服务器上安装的zookeeper版本不一致,这个时候我们可以手动排除掉zookeeper的依赖,引入版本正确的依赖

      <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
            <exclusions>
                <!--先排除自带的zookeeper3.5.3-->
                <exclusion>
                    <groupId>org.apache.zookeeper</groupId>
                    <artifactId>zookeeper</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--添加zookeeper3.6.1版本-->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.6.1</version>
        </dependency>
    

2.编写yml文件

spring.cloud.zookeeper.connect-string=192.168.182.128:2181

3.注解开启服务注册与发现

@EnableDiscoveryClient

注意zookeeper注册的节点是临时的,关闭服务则节点就会删除

4.消费者我们使用RestTemplate访问服务者
我们可以RestTemplate发送http请求

以GET请求为例:

    @Autowired
    RestTemplate restTemplate;
    String url = "http://" + host + ":" + port + "/hello?name={1}";
    ResponseEntity<String> responseEntity = restTemplate.getForEntity(url, String.class, name);    

主要来看 getForEntity 方法。第一个参数是 url ,url 中有一个占位符 {1} ,如果有多个占位符分别用 {2} 、 {3} … 去表示,第二个参数是接口返回的数据类型,最后是一个可变长度的参数,用来给占位符填值。在返回的 ResponseEntity 中,可以获取响应头中的信息,其中 getStatusCode 方法用来获取响应状态码, getBody 方法用来获取响应数据, getHeaders 方法用来获取响应头。

getForObject 方法和 getForEntity 方法类似,getForObject 方法也有三个重载的方法,参数和 getForEntity 一样,因此这里我就不重复介绍参数了,这里主要说下 getForObject 和 getForEntity 的差异,这两个的差异主要体现在返回值的差异上, getForObject 的返回值就是服务提供者返回的数据,使用 getForObject 无法获取到响应头。

posted @ 2021-05-14 20:23  刚刚好。  阅读(80)  评论(0)    收藏  举报