Nacos 服务发现-快速入门-创建服务消费者模块,使用 feign 调用 服务生产者
1、 新增 quickstart_consumer 子工程(子模块),
创建子模块:
--> 右键 nacos_discovery 父工程
--> Modules
--> Maven
--> Groupld : ( djh.it )
Artifactld : ( quickstart_consumer )
Version : 1.0-SNAPSHOT
--> Next
--> Module name: ( service1 )
Content root : ( C:\java-test\idea2019\nacos_discovery\quickstart_consumer )
Module file location: ( C:\java-test\idea2019\nacos_discovery\quickstart_consumer )
--> Finish
2、 在 服务消费者模块 quickstart_consumer 子工程中 的 pom.xml 文件中加入依赖:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>nacos_discovery</artifactId>
<groupId>djh.it</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>quickstart_consumer</artifactId>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
</dependencies>
</project>
<!-- C:\java-test\idea2019\nacos_discovery\quickstart_consumer\pom.xml -->
3、 在 服务消费者模块 quickstart_consumer 子工程中,创建 配置文件 application.yml
## C:\java-test\idea2019\nacos_discovery\quickstart_consumer\src\main\resources\application.yml
server:
port: 56020 # 启动端口 命令行注入
spring:
application:
name: quickstart-consumer #spring应用名, # 注意 FeignClient 不支持名字带下划线,即不支持 quickstart_consumer
cloud:
nacos:
# config: # 表示配置管理
discovery: # 表示服务发现
server-addr: 127.0.0.1:8848 # nacos服务器地址
# namespace: b75c342f-8aeb-4f5a-a1d3-21f0738d7960 # dev开发环境(nacos-1.1.3)
4、 在 服务消费者模块 quickstart_consumer 子工程中,创建 FeignClient 客户端 ProviderClient.java
/**
* C:\java-test\idea2019\nacos_discovery\quickstart_consumer\src\main\java\djh\it\nacos\client\ProviderClient.java
*
* 2024-4-12 创建 FeignClient 客户端 ProviderClient.java
*/
package djh.it.nacos.client;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
// # 注意 FeignClient 不支持名字带下划线,即不支持 quickstart_provider
// @FeignClient(value = "quickstart_provider") // error, 会报错
@FeignClient(value = "quickstart-provider") // successful
public interface ProviderClient {
@GetMapping("/service")
public String service();
}
5、 在 服务消费者模块 quickstart_consumer 子工程中,编写 Controller
创建 ConsumerController.java 类。
/**
* C:\java-test\idea2019\nacos_discovery\quickstart_consumer\src\main\java\djh\it\nacos\controller\ConsumerController.java
*
* 2024-4-12 服务消费者 consumer Controller
*/
package djh.it.nacos.controller;
import djh.it.nacos.client.ProviderClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ConsumerController {
@Autowired //注入动态代理对象,内部远程调用服务生产者
ProviderClient providerClient;
@GetMapping("/service")
public String service(){
//远程调用
String providerResult = providerClient.service();
return "consumer invoke" + " | " + providerResult;
}
}
6 、在 服务消费者模块 quickstart_consumer 子工程中,创建启动类 NacosConsumerApp.java。
/**
* C:\java-test\idea2019\nacos_discovery\quickstart_consumer\src\main\java\djh\it\nacos\NacosConsumerApp.java
*
* 2024-4-12 服务消费者 启动类 NacosConsumerApp.java
*/
package djh.it.nacos;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
@SpringBootApplication
@EnableDiscoveryClient //引入服务发现客户端
@EnableFeignClients //引入远程调用客户端
public class NacosConsumerApp {
public static void main(String[] args) {
SpringApplication.run(NacosConsumerApp.class, args);
}
}
7 、启动 nacos 服务 和 服务提供者 启动类 NacosProviderApp.java
服务消费者 启动类 NacosConsumerApp.java
8 、浏览器地址栏输入:http://127.0.0.1:8848/nacos/
点击 【服务管理】–> 【服务列表】
会发现如下界面:
9、 浏览器地址栏输入:http://127.0.0.1:56020/service
输出: consumer invoke | provider invoke
成功调用了生产者地址。
关联【Nacos 服务发现–快速入门–服务生产者模块相关代码】请点击如下:
Nacos 服务发现–快速入门–服务生产者模块相关代码