快速开始
架构设计
Springboot 2.4.5 + dubbo-spring-boot-starter 2.7.8 + zookeeper 3.4.6
(PS:需要本地启动ZK服务端,如果想更换为Nacos,也参考使用Nacos作为注册中心的Dubbo示例)
导入依赖
......
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.5</version>
</parent>
......
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- Dubbo Spring Boot Starter -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.8</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>2.7.8</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>2.8.0</version>
</dependency>
</dependencies>
代码实现
服务提供者
定义接口服务
这个接口最好放在common包,因为消费者和生产者都需要用到。
package com.ruer.platform.center.service;
public interface DemoService {
String syaHello(String name);
}
服务方实现接口
Dubbo提供了多种配置方式(之后会在文章中详细介绍),这里我采用的是注解配置的方式,
package com.ruer.platform.center.service;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.beans.factory.annotation.Value;
@DubboService(version = "1.0")
public class DemoServiceImpl implements DemoService {
@Value("${dubbo.application.name}")
private String serviceName;
@Override
public String syaHello(String name) {
return String.format("[%s]:Hello,%s", serviceName, name);
}
}
Spring属性配置
# 应用名称
spring:
application:
name: store-service
# dubbo配置
dubbo:
application:
name: store-service
protocol:
name: dubbo
port: 12345
registry:
address: zookeeper://127.0.0.1:2181
# 服务端口
server:
port: 8090
启动类添加EnableDubbo注解
/**
* @author wulg
* @since 20210422
*/
@SpringBootApplication
@EnableDubbo
public class StoreServiceApplication {
public static void main(String[] args) {
SpringApplication.run(StoreServiceApplication.class);
}
}
服务消费者
配置并调用远程服务
/**
* @author wulg
* @since 20210422
*/
@Service
public class IUserServiceImpl implements IUserService {
@DubboReference(version = "1.0")
private DemoService demoService;
@Override
public String syaHello(String name) {
return demoService.syaHello(name);
}
}
Spring属性配置
# 应用名称
spring:
application:
name: platform-service
# dubbo配置
dubbo:
application:
name: platform-service
protocol:
name: dubbo
port: 12344
registry:
address: zookeeper://127.0.0.1:2181
# 服务端口
server:
port: 8092
启动类添加EnableDubbo注解
/**
* @author wulg
* @since 20210422
*/
@SpringBootApplication
@EnableDubbo
public class PlatformServiceApplication {
public static void main(String[] args) {
SpringApplication.run(PlatformServiceApplication.class);
}
}
结果展示
Controller等代码比较简单,没有贴出来,以下是项目运行后的结果:

281

被折叠的 条评论
为什么被折叠?



