Dubbo+zookeeper+spring boot入门实例

Dubbo+zookeeper+spring boot入门实例

1、建一个工程

请添加图片描述
请添加图片描述
请添加图片描述

2、新建两个模块

1、提供者模块

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
再包下新建一个service包
请添加图片描述

2、消费者模块

与提供者模块步骤一样

3、导入依赖

两个模块都导入以下依赖

<!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-spring-boot-starter -->
<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>2.7.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient -->
<dependency>
    <groupId>com.github.sgroschupf</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.curator/curator-framework -->
<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-framework</artifactId>
    <version>2.12.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.curator/curator-recipes -->
<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-recipes</artifactId>
    <version>2.12.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper -->
<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.4.14</version>
    <exclusions>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
        </exclusion>
    </exclusions>
</dependency>

4、编写模块配置文件

1、提供者模块配置文件

server:
  port: 8081
dubbo:
  application:
    #服务应用名字
    name: provider
  registry:
    #注册中心地址
    address: zookeeper://127.0.0.1:2181
  scan:
    #哪些服务要被注册
    base-packages: com.xys.service

2、消费者模块配置文件

server:
  port: 8082
dubbo:
  application:
    #消费者去哪里拿服务,需要暴自己的名字
    name: consumer
  registry:
    #注册中心地址
    address: zookeeper://127.0.0.1:2181

5、编写service

1、提供者模块

package com.xys.service;

public interface TicketService {
    public String getTicket();
}
package com.xys.service;

import org.apache.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component;

//zookeeper:服务注册与发现
@Service
@Component
public class TicketServiceImpl implements TicketService {
    @Override
    public String getTicket() {
        return "购买票";
    }
}

2、消费者模块

package com.xys.service;

import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Service;

@Service
public class UserService {
    //想要拿到provider提供的票,要去注册中心去拿服务
    @Reference  //引用,pom坐标,可以定义路径相同的接口名
    TicketService ticketService;

    public void buyTicket(){
        String ticket = ticketService.getTicket();
        System.out.println("在注册中心拿到===》"+ticket);
    }

}

3、编写消费者模块测试类

package com.xys;

import com.xys.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class ConsumerApplicationTests {

    @Autowired
    UserService service;
    @Test
    void contextLoads() {
        service.buyTicket();
    }

}

4、错误解决方案

1、消费者模块引入提供者模块接口,可以在pom.xml引入
<dependency>
    <groupId>com.xys</groupId>
    <artifactId>provider</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <scope>compile</scope>
</dependency>
2、消费者模块测试时,把主程序的@SpringBootApplication注释掉,否则会报错如下
java.lang.IllegalStateException: Found multiple @SpringBootConfiguration annotated classes [Generic bean: class [com.xys.ConsumerApplication]; scope=; abstract=false; lazyInit=null; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in file [D:\Idea\SpringBootProjects\Dubbo_test\consumer\target\classes\com\xys\ConsumerApplication.class], Generic bean: class [com.xys.ProviderApplication]; scope=; abstract=false; lazyInit=null; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in file [D:\Idea\SpringBootProjects\Dubbo_test\provider\target\classes\com\xys\ProviderApplication.class]]

6、启动项目

1、先启动提供者模块

2、再启动消费者测试类

注意如果不按顺序消费者加载不到提供者的接口

7、启动zookeeper

请添加图片描述

8、加载Dubbo包

请添加图片描述

9、访问Dubbo查看

请添加图片描述
请添加图片描述

10、出错问题

1、仔细检查service所使用的注解是否正确

2、仔细检查服务是否打开

3、看模块启动的顺序对不

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芝兰生于深谷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值