SpringBoot使用zookeeper整合Dubbo

创建3个模块: 模块说明

  • dubbo-api 模块 存放消费者和生产者通用接口组+通用模块
  • dubbo-provider 服务提供者 ,生产者 提供业务方法的实现
  • dubbo-cosumer 服务消费者,请求服务,获取实现

搭建结构:

在这里插入图片描述
父模块工程pom.xml

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.0.RELEASE</version>
</parent>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.5.1</version>
            <configuration>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
    </plugins>
</build>

1 api模块

项目结构:
在这里插入图片描述
UserService

public interface UserService {
    public String  sayHello(String name);
}

2 开发provider(生产者)模块

生产者作为服务的提供者 dubbo官方提供非常简单的注解配置: 只需要使用两个注解即可:

作用:

@Service 注解 来完成服务的发布 注意导包的时候,要导入dubbo官方提供的包。

@EnabledDubbo 在启动类上添加,自动扫描所有的服务类(有@Service注解的类) 注册到zookeeper上发布
1.创建子模块 pom导入api依赖即可

<dependencies>
        <!--springboot 整合dubbo 开始 -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.5</version>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-dependencies-zookeeper</artifactId>
            <version>2.7.5</version>
            <type>pom</type>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--springboot 整合dubbo 结束-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
        </dependency>
     
       引入上述api模块坐标
        <dependency>
            <groupId>com.itheima.dubbo</groupId>
            <artifactId>api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
     
</dependencies>

2.搭建生产者工程目录
在这里插入图片描述
3.编写服务类: 注意使用注解 不要导错包 @Service,导的是dubbo包下的Service

//注意 : @Service注解不要导错包!!!!!
//  该注解 : 1  生成UserService接口实例对象   
//		2. 提供服务类 后续会结合 @EnableDubbo注解 服务注册到zookeeper中心上
@Service
public class UserServiceImpl implements UserService {
    @Override
    public String sayHello(String name) {
        System.out.println("----服务访问了一次------后续访问数据源");
        return "hello dubbo "+name;
    }
}

4.配置dubbo服务发布: 编写 application.properties文件 复制官方模板修改即可,
修改一下端口号:避免后续启动服务 端口被占用: 8088

# dubbo-provider.properties
dubbo.application.name=annotation-springboot-provider
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
dubbo.scan.base-packages=com.itheima.service
server.port=8081

确保本地zookeeper服务启动 : zkServer.cmd黑窗口打开!

5.编写启动类: 启动main方法 发布服务

@SpringBootApplication
//如果在配置文件中配置了dubbo.scan.base-packages=com.itheima.service,则不需要使用@EnableDubbo来扫描
//@EnableDubbo(scanBasePackages= "com.itheima.service.impl")// 官方提供的模板,修改扫描的包名: 自己的@Service类所在的包名
public class UserApplication {

    public static void main(String[] args) {
        SpringApplication.run(UserApplication.class,args);
        System.out.println("---生产者服务启动-----8088");
    }
}

6.打开 dubbo-admin后台管理界面 查看服务生产者有无注册!
在这里插入图片描述

3 开发消费者模块

同生产者开发类似:

  • @Reference 获取、订阅服务
  • 在这里插入图片描述
  1. 创建子模块,dubbo-consumer pom依赖 api即可
 <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--springboot 整合dubbo 开始 -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.5</version>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-dependencies-zookeeper</artifactId>
            <version>2.7.5</version>
            <type>pom</type>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--springboot 整合dubbo 结束-->

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
        </dependency>
     
       引入上述api模块坐标
        <dependency>
            <groupId>com.itheima.dubbo</groupId>
            <artifactId>api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
     
</dependencies>

2.编写Controller 对象 当浏览器发送请求: springmvc接受请求,调用dubbo服务

@RestController
public class UserController {

    @Reference  //  注解不要导错包  导入dubbo的才行  注册服务到zookeeper
    private UserService userService;

    @GetMapping("/hello/{name}")
    public String hello(@PathVariable("name") String name){
        String s = userService.sayHello(name);
        return "hello"+s;
    }
}

3.配置dubbo服务
编写application.properties

# dubbo-consumer.properties
dubbo.application.name=annotation-springboot-consumer
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.consumer.check=false
server.port=8088

4.启动main方法 服务消费者编写完成 查看dubbo-admin窗口
在这里插入图片描述
测试:

浏览器输入地址: 访问消费者 localhost:8088/hello/yuanjian
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值