springboot:springboot 集成 Dubbo+zookeeper

本文详细介绍了如何在SpringBoot项目中集成Dubbo和Zookeeper,创建服务提供者和消费者。首先启动Zookeeper,然后在SpringBoot的两个模块zook1和zook2中分别编写服务提供者和消费者。服务提供者通过引入Dubbo和Zookeeper依赖,配置相关属性,并使用注解发布服务。消费者导入服务提供者的接口,完成调用。最后通过dubbo-admin进行服务监控和测试。
摘要由CSDN通过智能技术生成

框架搭建

    步骤

  1. 先把咱们上节的 zookeeper 启动起来,可以看到测试的内容
  2. idea 创建两个模块 zook1,zook2
        zook1 我们给它想象成提供者。。里面的方法就是卖票

    编写service层

package com.xiaozhoubg.service;

public interface TicketService {
    public String getTicket();
}

    编写实现类

package com.xiaozhoubg.service;

public class TicketServiceImpl implements TicketService {
    @Override
    public String getTicket() {
        return "《晓舟报告》";
    }
}

    接下来编写zook2模块 service层,此处暂时先不写过多的代码,先把提供者也就是zook1写好

package com.xiaozhoubg.consumer.service;

public class UserService {
    //我们需要去拿去注册中心的服务
}

    需求:现在我们的用户想使用买票的服务,这要怎么弄呢 ?

    服务提供者

  1. 将服务提供者注册到注册中心,我们需要整合Dubbo和zookeeper,所以需要导包

    我们从dubbo官网进入github,看下方的帮助文档,找到dubbo-springboot,找到依赖包

 <!-- Dubbo Spring Boot Starter -->
    <dependency>
        <groupId>org.apache.dubbo</groupId>
        <artifactId>dubbo-spring-boot-starter</artifactId>
        <version>2.7.3</version>
    </dependency>

    zookeeper的包我们去maven仓库下载,查询zkclient

<!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient -->
<dependency>
    <groupId>com.github.sgroschupf</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.1</version>
</dependency>

    【新版的坑】zookeeper及其依赖包,解决日志冲突,还需要剔除日志依赖;

<!-- 引入zookeeper -->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>2.12.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>2.12.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.14</version>
            <!--排除这个slf4j-log4j12-->
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
  1. 在springboot配置文件中配置dubbo相关属性!
#当前应用名字
dubbo.application.name=zook1
#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
#扫描指定包下服务
dubbo.scan.base-packages=com.xiaozhoubg.service
  1. 在service中配置注解,发布服务

    编写实现类

package com.xiaozhoubg.service;


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

// 为了防止混肴,所以咱们注册到spring容器的注解是Component
// !!!!千万注意这里,Service注解import 这里导包是dubbo的包!!!

@Service //将服务发布出去
@Component //放在容器中
public class TicketServiceImpl implements TicketService {
    @Override
    public String getTicket() {
        return "《晓舟报告》";
    }
}

    应用启动起来,dubbo就会扫描指定的包下带有@component注解的服务,将它发布在指定的注册中心中!

    编写zook2
    zook1 编写完毕,接下来编写zook2,也就是说消费者这一块

  1. 先导入依赖,和之前的一摸一样
<!--dubbo-->
        <!-- Dubbo Spring Boot Starter -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.3</version>
        </dependency>
        <!--zookeeper-->
        <!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient -->
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>
        <!-- 引入zookeeper -->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>2.12.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>2.12.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.14</version>
            <!--排除这个slf4j-log4j12-->
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
  1. 配置参数
#端口改成8081
server.port=8081
#当前应用名字
dubbo.application.name=zook2
#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
  1. 本来正常步骤是需要将服务提供者的接口打包,然后用pom文件导入,我们这里使用简单的方式,直接将提供者的服务接口拿过来,路径必须保证正确,即和提供者服务路径相同;
    在这里插入图片描述
  2. 完善消费者的service
package com.xiaozhoubg.service;

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

// 注意,这里的service是spring的
@Service
public class Userservice {
    //我们会去拿注册中心的服务,注意这里自动注入的注解是@Reference
    // 远程引用指定的服务,他会按照全类名进行匹配,看谁给注册中心注册了这个全类名
    @Reference
    TicketService ticketService;
    public void buyTicket(){
        String ticket = ticketService.getTicket();
        System.out.println("在注册中心买到"+ticket);
    }
}
  1. 编写测试类
package com.xiaozhoubg;

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

@SpringBootTest
class Zook2ApplicationTests {

    @Autowired
    Userservice userservice;
    @Test
    void contextLoads() {
        userservice.buyTicket();

    }

}

启动测试

    启动测试

  1. 开启zookeeper

  2. 打开dubbo-admin实现监控

  3. 开启服务者

  4. 看到消费者,idea控制台中输出 “在注册中心买到《晓舟报告》

    我们可以在dubbo 服务治理那一栏看到 咱们的提供者已经被注册。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot集成DubboZookeeper非常简单,下面是详细的步骤: 1. 创建一个Spring Boot项目。 2. 在pom.xml文件中添加DubboZookeeper依赖: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.7.3</version> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.5.5</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency> ``` 3. 在application.properties文件中配置DubboZookeeper: ```properties # Dubbo配置 dubbo.application.name=dubbo-demo dubbo.registry.address=zookeeper://127.0.0.1:2181 dubbo.protocol.name=dubbo dubbo.protocol.port=20880 # Zookeeper配置 zookeeper.session.timeout=60000 zookeeper.connection.timeout=15000 zookeeper.retry.count=3 zookeeper.retry.interval=1000 zookeeper.namespace=dubbo ``` 4. 创建Dubbo服务接口和实现类: ```java public interface HelloService { String sayHello(String name); } @Service public class HelloServiceImpl implements HelloService { @Override public String sayHello(String name) { return "Hello, " + name + "!"; } } ``` 5. 在启动类上添加@EnableDubbo注解启用Dubbo: ```java @SpringBootApplication @EnableDubbo public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 6. 启动Zookeeper服务。 7. 运行Spring Boot应用程序,测试Dubbo服务是否正常工作。 以上就是在Spring Boot中集成DubboZookeeper的步骤。如果您遇到任何问题,请随时问我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值