SpringBoot整合Dubbo小测-3

本章节将会介绍如下内容:

  1. Dubbo整合zookeeper
  2. Dubbo启动检查关闭

依赖添加

在dubbo-provider项目pom文件中添加如下内容

        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.11</version>
            <exclusions>
                <exclusion>
                    <artifactId>log4j</artifactId>
                    <groupId>log4j</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>slf4j-log4j12</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>

以上添加了zookeeper依赖,以及zkclient依赖。

在dubbo-consumer项目pom文件中添加如下内容

        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.11</version>
        </dependency>
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>

启动检查关闭

在Dubbo启动时,默认会检查是否有服务提供者,若没有则会报错,这种场景通常会在例如需要先等待数据库启动,然后启动服务时使用,但例如服务消费者可能通常不需要检查是否有服务提供者,只需要在用户访问时有服务提供者存在并注册过即可,那么我们可以选择关闭启动检查。

要关闭启动检查也非常简单,在DubboConfiguration类中的ConsumerConfig注入时,添加如下一行代码即可

//关闭所有服务的启动时检查 (没有提供者时报错):
consumerConfig.setCheck(false);

修改后的ConsumerConfig对象注入代码如下

@Bean
public ConsumerConfig consumerConfig() {
        ConsumerConfig consumerConfig = new ConsumerConfig();
        consumerConfig.setTimeout(3000);

        //关闭所有服务的启动时检查 (没有提供者时报错):
        consumerConfig.setCheck(false);
        return consumerConfig;
    }

使用Zookeeper作为Dubbo注册中心

在之前的示例中,我们使用的是Redis作为Dubbo的注册中心,而在实际开发中,我们通常会使用Zookeeper作为Dubbo的注册中心,因此我们需要替换redis到Zookeeper。

若你尚未安装zookeeper,可参考以下文章安装

搭建zookeeper单点服务

安装完毕后,修改源代码以替换为zookeeper注册中心。

找到consumer项目下的DubboConfiguration类,并修改其中RegistryConfig注入对象的代码,修改成如下内容

    @Bean
    public RegistryConfig registryConfig() {
        RegistryConfig registryConfig = new RegistryConfig();
        registryConfig.setAddress("zookeeper://your zookeeper server ip:port");
        registryConfig.setClient("zkclient");
        return registryConfig;
    }

同样找到provider项目下的DubboConfiguration类,修改RegistryConfig注入对象的代码

    @Bean
    public RegistryConfig registryConfig() {
        RegistryConfig registryConfig = new RegistryConfig();
        registryConfig.setAddress("zookeeper://your zookeeper server ip:port");
        registryConfig.setClient("zkclient");
        return registryConfig;
    }

现在,我们运行程序,并检查zookeeper服务中是否已经注册了服务即可。

其他Dubbo高级特性,请参考Dubbo使用手册尝试运行即可。

发表评论

电子邮件地址不会被公开。