diff --git a/lab-30/lab-30-dubbo-annotations-nacos/pom.xml b/lab-30/lab-30-dubbo-annotations-nacos/pom.xml new file mode 100644 index 00000000..28352f70 --- /dev/null +++ b/lab-30/lab-30-dubbo-annotations-nacos/pom.xml @@ -0,0 +1,21 @@ + + + + lab-30 + cn.iocoder.springboot.labs + 1.0-SNAPSHOT + + 4.0.0 + + lab-30-dubbo-annotations-nacos + pom + + user-rpc-service-api-03 + user-rpc-service-provider-03 + user-rpc-service-consumer-03 + + + + diff --git a/lab-30/lab-30-dubbo-annotations-nacos/user-rpc-service-api-03/pom.xml b/lab-30/lab-30-dubbo-annotations-nacos/user-rpc-service-api-03/pom.xml new file mode 100644 index 00000000..addececb --- /dev/null +++ b/lab-30/lab-30-dubbo-annotations-nacos/user-rpc-service-api-03/pom.xml @@ -0,0 +1,15 @@ + + + + lab-30-dubbo-annotations-demo + cn.iocoder.springboot.labs + 1.0-SNAPSHOT + + 4.0.0 + + user-rpc-service-api-03 + + + diff --git a/lab-30/lab-30-dubbo-annotations-nacos/user-rpc-service-api-03/src/main/java/cn/iocoder/springboot/lab30/rpc/api/UserRpcService.java b/lab-30/lab-30-dubbo-annotations-nacos/user-rpc-service-api-03/src/main/java/cn/iocoder/springboot/lab30/rpc/api/UserRpcService.java new file mode 100644 index 00000000..d65cb1fd --- /dev/null +++ b/lab-30/lab-30-dubbo-annotations-nacos/user-rpc-service-api-03/src/main/java/cn/iocoder/springboot/lab30/rpc/api/UserRpcService.java @@ -0,0 +1,18 @@ +package cn.iocoder.springboot.lab30.rpc.api; + +import cn.iocoder.springboot.lab30.rpc.dto.UserDTO; + +/** + * 用户服务 RPC Service 接口 + */ +public interface UserRpcService { + + /** + * 根据指定用户编号,获得用户信息 + * + * @param id 用户编号 + * @return 用户信息 + */ + UserDTO get(Integer id); + +} diff --git a/lab-30/lab-30-dubbo-annotations-nacos/user-rpc-service-api-03/src/main/java/cn/iocoder/springboot/lab30/rpc/dto/UserDTO.java b/lab-30/lab-30-dubbo-annotations-nacos/user-rpc-service-api-03/src/main/java/cn/iocoder/springboot/lab30/rpc/dto/UserDTO.java new file mode 100644 index 00000000..806923fa --- /dev/null +++ b/lab-30/lab-30-dubbo-annotations-nacos/user-rpc-service-api-03/src/main/java/cn/iocoder/springboot/lab30/rpc/dto/UserDTO.java @@ -0,0 +1,49 @@ +package cn.iocoder.springboot.lab30.rpc.dto; + +import java.io.Serializable; + +/** + * 用户信息 DTO + */ +public class UserDTO implements Serializable { + + /** + * 用户编号 + */ + private Integer id; + /** + * 昵称 + */ + private String name; + /** + * 性别 + */ + private Integer gender; + + public Integer getId() { + return id; + } + + public UserDTO setId(Integer id) { + this.id = id; + return this; + } + + public String getName() { + return name; + } + + public UserDTO setName(String name) { + this.name = name; + return this; + } + + public Integer getGender() { + return gender; + } + + public UserDTO setGender(Integer gender) { + this.gender = gender; + return this; + } +} diff --git a/lab-30/lab-30-dubbo-annotations-nacos/user-rpc-service-consumer-03/pom.xml b/lab-30/lab-30-dubbo-annotations-nacos/user-rpc-service-consumer-03/pom.xml new file mode 100644 index 00000000..63d22468 --- /dev/null +++ b/lab-30/lab-30-dubbo-annotations-nacos/user-rpc-service-consumer-03/pom.xml @@ -0,0 +1,67 @@ + + + + org.springframework.boot + spring-boot-starter-parent + 2.2.1.RELEASE + + + 4.0.0 + + user-rpc-service-consumer-03 + + + + + cn.iocoder.springboot.labs + user-rpc-service-api-03 + 1.0-SNAPSHOT + + + + + org.springframework.boot + spring-boot-starter + + + + + org.apache.dubbo + dubbo + 2.7.4.1 + + + org.apache.dubbo + dubbo-spring-boot-starter + 2.7.4.1 + + + + + + + + + + + + + + + + + com.alibaba.nacos + nacos-client + 1.2.1 + + + org.apache.dubbo + dubbo-registry-nacos + 2.7.4.1 + + + + + diff --git a/lab-30/lab-30-dubbo-annotations-nacos/user-rpc-service-consumer-03/src/main/java/cn/iocoder/springboot/lab30/rpc/ConsumerApplication.java b/lab-30/lab-30-dubbo-annotations-nacos/user-rpc-service-consumer-03/src/main/java/cn/iocoder/springboot/lab30/rpc/ConsumerApplication.java new file mode 100644 index 00000000..1a744ca9 --- /dev/null +++ b/lab-30/lab-30-dubbo-annotations-nacos/user-rpc-service-consumer-03/src/main/java/cn/iocoder/springboot/lab30/rpc/ConsumerApplication.java @@ -0,0 +1,38 @@ +package cn.iocoder.springboot.lab30.rpc; + +import cn.iocoder.springboot.lab30.rpc.api.UserRpcService; +import cn.iocoder.springboot.lab30.rpc.dto.UserDTO; +import org.apache.dubbo.config.annotation.Reference; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.boot.CommandLineRunner; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.stereotype.Component; + +@SpringBootApplication +public class ConsumerApplication { + + public static void main(String[] args) { + // 启动 Spring Boot 应用 + ConfigurableApplicationContext context = SpringApplication.run(ConsumerApplication.class, args); + } + + @Component + public class UserRpcServiceTest implements CommandLineRunner { + + private final Logger logger = LoggerFactory.getLogger(getClass()); + + @Reference(version = "${dubbo.consumer.UserRpcService.version}") + private UserRpcService userRpcService; + + @Override + public void run(String... args) throws Exception { + UserDTO user = userRpcService.get(1); + logger.info("[run][发起一次 Dubbo RPC 请求,获得用户为({})", user); + } + + } + +} diff --git a/lab-30/lab-30-dubbo-annotations-nacos/user-rpc-service-consumer-03/src/main/resources/application.yaml b/lab-30/lab-30-dubbo-annotations-nacos/user-rpc-service-consumer-03/src/main/resources/application.yaml new file mode 100644 index 00000000..6042c876 --- /dev/null +++ b/lab-30/lab-30-dubbo-annotations-nacos/user-rpc-service-consumer-03/src/main/resources/application.yaml @@ -0,0 +1,13 @@ +# dubbo 配置项,对应 DubboConfigurationProperties 配置类 +dubbo: + # Dubbo 应用配置 + application: + name: user-service-consumer # 应用名 + # Dubbo 注册中心配置 + registry: + address: nacos://127.0.0.1:8848 # 注册中心地址。个鞥多注册中心,可见 http://dubbo.apache.org/zh-cn/docs/user/references/registry/introduction.html 文档。 + # Dubbo 消费者配置 + consumer: + timeout: 1000 # 【重要】远程服务调用超时时间,单位:毫秒。默认为 1000 毫秒,胖友可以根据自己业务修改 + UserRpcService: + version: 1.0.0 diff --git a/lab-30/lab-30-dubbo-annotations-nacos/user-rpc-service-provider-03/pom.xml b/lab-30/lab-30-dubbo-annotations-nacos/user-rpc-service-provider-03/pom.xml new file mode 100644 index 00000000..29a22d18 --- /dev/null +++ b/lab-30/lab-30-dubbo-annotations-nacos/user-rpc-service-provider-03/pom.xml @@ -0,0 +1,67 @@ + + + + org.springframework.boot + spring-boot-starter-parent + 2.2.1.RELEASE + + + 4.0.0 + + user-rpc-service-provider-03 + + + + + cn.iocoder.springboot.labs + user-rpc-service-api-03 + 1.0-SNAPSHOT + + + + + org.springframework.boot + spring-boot-starter + + + + + org.apache.dubbo + dubbo + 2.7.4.1 + + + org.apache.dubbo + dubbo-spring-boot-starter + 2.7.4.1 + + + + + + + + + + + + + + + + + com.alibaba.nacos + nacos-client + 1.2.1 + + + org.apache.dubbo + dubbo-registry-nacos + 2.7.4.1 + + + + + diff --git a/lab-30/lab-30-dubbo-annotations-nacos/user-rpc-service-provider-03/src/main/java/cn/iocoder/springboot/lab30/rpc/ProviderApplication.java b/lab-30/lab-30-dubbo-annotations-nacos/user-rpc-service-provider-03/src/main/java/cn/iocoder/springboot/lab30/rpc/ProviderApplication.java new file mode 100644 index 00000000..2ba63663 --- /dev/null +++ b/lab-30/lab-30-dubbo-annotations-nacos/user-rpc-service-provider-03/src/main/java/cn/iocoder/springboot/lab30/rpc/ProviderApplication.java @@ -0,0 +1,14 @@ +package cn.iocoder.springboot.lab30.rpc; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class ProviderApplication { + + public static void main(String[] args) { + // 启动 Spring Boot 应用 + SpringApplication.run(ProviderApplication.class, args); + } + +} diff --git a/lab-30/lab-30-dubbo-annotations-nacos/user-rpc-service-provider-03/src/main/java/cn/iocoder/springboot/lab30/rpc/service/UserRpcServiceImpl.java b/lab-30/lab-30-dubbo-annotations-nacos/user-rpc-service-provider-03/src/main/java/cn/iocoder/springboot/lab30/rpc/service/UserRpcServiceImpl.java new file mode 100644 index 00000000..fe6ef676 --- /dev/null +++ b/lab-30/lab-30-dubbo-annotations-nacos/user-rpc-service-provider-03/src/main/java/cn/iocoder/springboot/lab30/rpc/service/UserRpcServiceImpl.java @@ -0,0 +1,17 @@ +package cn.iocoder.springboot.lab30.rpc.service; + +import cn.iocoder.springboot.lab30.rpc.api.UserRpcService; +import cn.iocoder.springboot.lab30.rpc.dto.UserDTO; +import org.apache.dubbo.config.annotation.Service; + +@Service(version = "${dubbo.provider.UserRpcService.version}") +public class UserRpcServiceImpl implements UserRpcService { + + @Override + public UserDTO get(Integer id) { + return new UserDTO().setId(id) + .setName("没有昵称:" + id) + .setGender(id % 2 + 1); // 1 - 男;2 - 女 + } + +} diff --git a/lab-30/lab-30-dubbo-annotations-nacos/user-rpc-service-provider-03/src/main/resources/application.yaml b/lab-30/lab-30-dubbo-annotations-nacos/user-rpc-service-provider-03/src/main/resources/application.yaml new file mode 100644 index 00000000..0beae3f8 --- /dev/null +++ b/lab-30/lab-30-dubbo-annotations-nacos/user-rpc-service-provider-03/src/main/resources/application.yaml @@ -0,0 +1,20 @@ +# dubbo 配置项,对应 DubboConfigurationProperties 配置类 +dubbo: + # Dubbo 应用配置 + application: + name: user-service-provider # 应用名 + # Dubbo 注册中心配 + registry: + address: nacos://127.0.0.1:8848 # 注册中心地址。个鞥多注册中心,可见 http://dubbo.apache.org/zh-cn/docs/user/references/registry/introduction.html 文档。 + # Dubbo 服务提供者协议配置 + protocol: + port: -1 # 协议端口。使用 -1 表示随机端口。 + name: dubbo # 使用 `dubbo://` 协议。更多协议,可见 http://dubbo.apache.org/zh-cn/docs/user/references/protocol/introduction.html 文档 + # Dubbo 服务提供者配置 + provider: + timeout: 1000 # 【重要】远程服务调用超时时间,单位:毫秒。默认为 1000 毫秒,胖友可以根据自己业务修改 + UserRpcService: + version: 1.0.0 + # 配置扫描 Dubbo 自定义的 @Service 注解,暴露成 Dubbo 服务提供者 + scan: + base-packages: cn.iocoder.springboot.lab30.rpc.service diff --git a/lab-30/pom.xml b/lab-30/pom.xml index 74a96a45..1843001b 100644 --- a/lab-30/pom.xml +++ b/lab-30/pom.xml @@ -14,6 +14,7 @@ lab-30-dubbo-xml-demo lab-30-dubbo-annotations-demo + lab-30-dubbo-annotations-nacos