Spring Boot , Dubbo 直连案例

案例 : 分作三个模块 1 dubbo-common, 2 dubbo-provider, 4 dubbo-consumer

1 dubbo-common模块, maven搭建的一个普通的java项目

1.1 pom文件
<!--
 	持有 dubbo 依赖, 
	目的是为了方便管理, 之后provider和consumer只需要持有这个模块的依赖, 就不需要各自添加dubbo依赖
-->
<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo</artifactId>
    <version>2.7.8</version>
</dependency>
1.2 持有公共Service接口
package com;

public interface DosomeService {
    Object dosome(String str);
}

2 dubbo-provider 模块, springboot项目

2.1 pom 文件
<dependency>
    <groupId>org.example</groupId>
    <artifactId>dubbo-common</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>
2.2 yml文件配置
server:
  port: 8081 #Tomcat端口, 和provider模块当然不能重复
2.3 在 resources 目录下创建 dubbo-consumer.properties 配置文件, (命名随意)
# 和项目名称相同
dubbo.application.name=dubbo-Serv
# 查阅官方文档可知, registry.address 属性是必须的, 即使不使用注册中心, 也得有这个属性, 随便给一个;
dubbo.registry.address=N/A
# 设置 registry.register=false, 消除 registry.address 的作用;
dubbo.registry.register=false
# 固定的
dubbo.protocol.name=dubbo
# 暴露服务的端口
dubbo.protocol.port=20880
2.4 创建接口的实现类
package com.example.dubboserv.service.impl;

import com.DosomeService;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

@Component
@DubboService (version = "1.0.0", timeout = 3000)
public class DosomeServiceImpl implements DosomeService {
    @Override
    public Object dosome(String str) {
        System.out.println("服务被调用");
        List<String> x = new ArrayList<>();
        x.add("a");
        x.add("b");
        x.add("c");
        return x;
    }
}
2.5 创建配置类
// 表明这是一个配置类
@Configuration
// 开启dubbo, 作为服务端, 在括号内指定服务的包
@EnableDubbo(scanBasePackages = "com.example.dubboserv.service.impl")
// 扫描dubbo配置文件
@PropertySource("classpath:/dubbo-provider.properties")
public class DubboServConfig {
    // 啥也不用干
}
2.6 启动类不需要做改变
@SpringBootApplication
public class DubboServApplication {
    public static void main(String[] args) {
        SpringApplication.run(DubboServApplication.class, args);
    }
}

3 dubbo-consumer 模块, springboot项目

3.1 pom 文件
<dependency>
    <groupId>org.example</groupId>
    <artifactId>dubbo-common</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>
3.2 yml文件配置
server:
  port: 8081 #Tomcat端口, 和provider模块当然不能重复
3.3 在 resources 目录下创建 dubbo-provider.properties 配置文件, (命名随意)
# 和项目名称相同
dubbo.application.name=dubbo-consu
# 固定的
dubbo.protocol.name=dubbo
# 暴露服务的端口
dubbo.protocol.port=20880
# 启动时不检查是否有服务, 默认是true
dubbo.consumer.check=false
3.4 创建配置类
// 表明这是一个配置类
@Configuration
// 开启dubbo
@EnableDubbo
// 扫描dubbo配置文件
@PropertySource("classpath:/dubbo-consumer.properties")
public class DubboServConfig {
    // 啥也不用干
}
3.5 启动类不需要做改变
@EnableScheduling
@SpringBootApplication
public class DubboConsuApplication {
    public static void main(String[] args) {
        SpringApplication.run(DubboServApplication.class, args);
    }
}
3.6 通过定时任务来测试服务的调用
@Component
public class Test {
    
    // 通过 url 属性指定 ip 和 port, 直接访问服务提供者
    @DubboReference(
            id="dosomeService", 
            interfaceName = "com.DosomeService", 
            version = "1.0.0", 
            url="dubbo://10.41.25.2:20880")
    private DosomeService dosomeService;
    
    @Scheduled(cron = "0/5 * * * * ?")
    public void m() {
        Object ans = dosomeService.dosome("发起调用");
        System.out.println(ans);
    }
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值