文章目录版权声明:本文为 小异常 原创文章,非商用自由转载-保持署名-注明出处,谢谢!
本文网址:https://sunkuan.blog.csdn.net/article/details/120501599
- 一、搭建 Maven 聚合项目
- 1、创建 dubbo-demo 项目
- 2、整理 dubbo-demo 项目的 pom
- 3、创建 dubbo-api、dubbo-server、dubbo-client 子模块
- 4、目录结构
- 5、Maven依赖
- 二、dubbo-api
- 1、pom.xml
- 2、User 类
- 3、UserService 接口
- 三、dubbo-provider
- 1、pom.xml
- 2、application.yml
- 3、UserServiceImpl
- 4、DubboProviderApplication
- 四、dubbo-consumer
- 1、pom.xml
- 2、application.yml
- 3、UserInit
- 4、DubboConsumerApplication
- 五、测试程序
- 六、程序代码
终于进入实战环节了,本篇将以 Spring Boot 为基础,来整合 Dubbo 来实现一个 HelloWorld 小例子。通过上篇博客相信大家也了解到在 Dubbo 中有个 注册中心 这个东西,官方推荐的虽然是 Zookeeper,但由于 Zookeeper 东西也比较多,我们本篇博客暂时使用 Multicast 注册中心 带大家入门。
Multicast 只适用于学习和测试,非常不推荐用于实际生产,这也是官方说的。
Multicast 注册中心 不需要启动任何中心节点,只要广播地址一样,就可以互相发现。下面是官方提供的结构图:
- 提供方启动时广播自己的地址;
- 消费方启动时广播订阅请求;
- 提供方收到订阅请求时,单播自己的地址给订阅者,如果设置了 unicast=false,则广播给订阅者;
- 消费方收到提供方地址时,连接该地址进行 RPC 调用。
由组播受网络结构限制,只适合小规模应用或开发阶段使用。组播地址段: 224.0.0.0 - 239.255.255.255。
一、搭建 Maven 聚合项目 1、创建 dubbo-demo 项目
2、整理 dubbo-demo 项目的 pom
4.0.0 pom dubbo-provider dubbo-consumer dubbo-api org.springframework.boot spring-boot-starter-parent 2.5.4 com.demo dubbo-demo 0.0.1-SNAPSHOT dubbo-demo Demo project for Spring Boot 1.8 2.7.3 org.apache.dubbo dubbo-spring-boot-starter ${dubbo.version} org.springframework.boot spring-boot-maven-plugin
3、创建 dubbo-api、dubbo-server、dubbo-client 子模块
以创建 dubbo-api 子模块为例,dubbo-server 与 dubbo-client 创建方式相同。
4、目录结构
5、Maven依赖
二、dubbo-api 1、pom.xml
4.0.0 com.demo dubbo-demo 0.0.1-SNAPSHOT com.demo dubbo-api 0.0.1-SNAPSHOT dubbo-api Demo project for Spring Boot 1.8 org.springframework.boot spring-boot-starter-web org.apache.dubbo dubbo-spring-boot-starter org.springframework.boot spring-boot-maven-plugin
2、User 类
public class User implements Serializable {
private Integer id;
private String name;
// set..() & get..()
// toString()
}
3、UserService 接口
public interface UserService {
User selectUserById(Integer id);
}
三、dubbo-provider 1、pom.xml
4.0.0 com.demo dubbo-demo 0.0.1-SNAPSHOT com.demo dubbo-provider 0.0.1-SNAPSHOT dubbo-provider Demo project for Spring Boot 1.8 com.demo dubbo-api 0.0.1-SNAPSHOT org.springframework.boot spring-boot-maven-plugin
2、application.yml
#防止端口冲突
server:
port: 8001
dubbo:
application:
# 应用名称
name: provider
registry:
# 注册中心地址
address: multicast://224.5.6.7:1234
# 超时时间,单位毫秒
timeout: 6000
protocol:
#协议名称
name: dubbo
#协议端口
port: 20880
scan:
#扫描包的位置
base-packages: com.demo.service
3、UserServiceImpl
import org.apache.dubbo.config.annotation.Service;
@Service(version = "1.0")
public class UserServiceImpl implements UserService {
@Override
public User selectUserById(Integer id) {
User user = new User();
user.setId(id);
user.setName("张三");
return user;
}
}
4、DubboProviderApplication
@SpringBootApplication
public class DubboProviderApplication {
public static void main(String[] args) {
SpringApplication.run(DubboProviderApplication.class, args);
}
}
四、dubbo-consumer 1、pom.xml
4.0.0 com.demo dubbo-demo 0.0.1-SNAPSHOT com.demo dubbo-consumer 0.0.1-SNAPSHOT dubbo-consumer Demo project for Spring Boot 1.8 com.demo dubbo-api 0.0.1-SNAPSHOT org.springframework.boot spring-boot-maven-plugin
2、application.yml
#防止端口冲突
server:
port: 8002
dubbo:
application:
# 应用名称
name: consumer
registry:
# 注册中心地址
address: multicast://224.5.6.7:1234
3、UserInit
@Component
public class UserInit implements CommandLineRunner {
@Reference(version = "1.0",parameters = {"unicast","false"})
private UserService userService;
@Override
public void run(String... args) throws Exception {
System.out.println(userService.selectUserById(2));
}
}
4、DubboConsumerApplication
@SpringBootApplication
public class DubboConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(DubboConsumerApplication.class, args);
}
}
五、测试程序
先执行 DubboProviderApplication ( 服务提供者程序),再执行 DubboConsumerApplication ( 服务消费者程序),执行效果如下:
六、程序代码
本文代码的下载链接:https://download.csdn.net/download/sun8112133/24503038



