diff --git a/lab-44/lab-44-nacos-discovery-demo/pom.xml b/lab-44/lab-44-nacos-discovery-demo/pom.xml new file mode 100644 index 00000000..a56524a1 --- /dev/null +++ b/lab-44/lab-44-nacos-discovery-demo/pom.xml @@ -0,0 +1,30 @@ + + + + org.springframework.boot + spring-boot-starter-parent + 2.2.2.RELEASE + + + 4.0.0 + + lab-44-nacos-discovery-demo + + + + + org.springframework.boot + spring-boot-starter-web + + + + + com.alibaba.boot + nacos-discovery-spring-boot-starter + 0.2.4 + + + + diff --git a/lab-44/lab-44-nacos-discovery-demo/src/main/java/cn/iocoder/springboot/lab44/nacosdemo/Application.java b/lab-44/lab-44-nacos-discovery-demo/src/main/java/cn/iocoder/springboot/lab44/nacosdemo/Application.java new file mode 100644 index 00000000..0f9ee09a --- /dev/null +++ b/lab-44/lab-44-nacos-discovery-demo/src/main/java/cn/iocoder/springboot/lab44/nacosdemo/Application.java @@ -0,0 +1,13 @@ +package cn.iocoder.springboot.lab44.nacosdemo; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } + +} diff --git a/lab-44/lab-44-nacos-discovery-demo/src/main/java/cn/iocoder/springboot/lab44/nacosdemo/controller/DemoController.java b/lab-44/lab-44-nacos-discovery-demo/src/main/java/cn/iocoder/springboot/lab44/nacosdemo/controller/DemoController.java new file mode 100644 index 00000000..a3ada532 --- /dev/null +++ b/lab-44/lab-44-nacos-discovery-demo/src/main/java/cn/iocoder/springboot/lab44/nacosdemo/controller/DemoController.java @@ -0,0 +1,40 @@ +package cn.iocoder.springboot.lab44.nacosdemo.controller; + +import com.alibaba.nacos.api.annotation.NacosInjected; +import com.alibaba.nacos.api.exception.NacosException; +import com.alibaba.nacos.api.naming.NamingService; +import com.alibaba.nacos.api.naming.pojo.Instance; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.client.RestTemplate; + +import java.util.List; + +@RestController +@RequestMapping("/demo") +public class DemoController { + + @NacosInjected + private NamingService namingService; + + private RestTemplate restTemplate = new RestTemplate(); + + @GetMapping("/provider") + public String provider() { + return "echo"; + } + + @GetMapping("/consumer") + public String consumer() throws IllegalStateException, NacosException { + // 获得实例 + List instances = namingService.getAllInstances("demo-application"); + // 获得首个实例,进行调用 + Instance instance = instances.stream().findFirst() + .orElseThrow(() -> new IllegalStateException("未找到对应的 Instance")); + // 执行请求 + return restTemplate.getForObject("http://" + instance.toInetAddr() + "/demo/provider", + String.class); + } + +} diff --git a/lab-44/lab-44-nacos-discovery-demo/src/main/resources/application.yaml b/lab-44/lab-44-nacos-discovery-demo/src/main/resources/application.yaml new file mode 100644 index 00000000..e51f4fd0 --- /dev/null +++ b/lab-44/lab-44-nacos-discovery-demo/src/main/resources/application.yaml @@ -0,0 +1,12 @@ +spring: + application: + name: demo-application # 应用名 + +nacos: + discovery: + server-addr: 127.0.0.1:18848 # Nacos 服务器地址 + auto-register: true # 是否自动注册到 Nacos 中。默认为 false。 + namespace: # 使用的 Nacos 的命名空间,默认为 null。 + register: + group-name: DEFAULT_GROUP # 使用的 Nacos 服务分组,默认为 DEFAULT_GROUP。 + cluster-name: cluster01 # 集群名,默认为空。 diff --git a/lab-44/pom.xml b/lab-44/pom.xml index 630dcbf5..10aa6670 100644 --- a/lab-44/pom.xml +++ b/lab-44/pom.xml @@ -18,6 +18,7 @@ lab-44-nacos-config-demo-jasypt lab-44-nacos-config-demo-actuator lab-44-nacos-config-demo-multi + lab-44-nacos-discovery-demo