当前位置: 首页> 文旅> 艺术 > nacos 整合 openfeign实现远程调用

nacos 整合 openfeign实现远程调用

时间:2025/8/25 3:08:09来源:https://blog.csdn.net/qq_21299835/article/details/139969612 浏览次数:0次

结合之前写过的案例

Springcloud Alibaba nacos简单使用

Springcloud 之 eureka注册中心加feign调用

在微服务架构中,服务注册与发现是一个关键组件。Nacos 是一个开源的服务注册与发现、配置管理平台,而 OpenFeign 是一个声明式的 Web 服务客户端,可以简化服务调用的过程。本文将介绍如何将 Nacos 与 OpenFeign 整合,实现远程服务调用。

1. 环境准备

在开始之前,请确保你已经安装并启动了 Nacos 服务器。你可以从 Nacos 官方网站 获取安装指南。

2. 创建服务提供者

首先,我们创建一个服务提供者,它将注册到 Nacos 并提供一个 RESTful API。

2.1 创建 Spring Boot 项目

创建一个新的 Spring Boot 项目,并添加以下依赖:

 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.5.RELEASE</version><relativePath/> <!-- lookup parent from repository --><!-- lookup parent from repository --></parent><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--SpringBoot通用依赖模块--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.2.3.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>

2.2 配置 Nacos

在 application.yml 文件中配置 Nacos 服务地址:

server:port: 9001
spring:application:name: service-providercloud:nacos:discovery:server-addr: localhost:8848 #配置Nacos地址

2.3 定义服务接口

创建一个 RESTful 接口:

@RestController
public class ServiceProviderController {@Value("${server.port}")private String serverPort;@GetMapping(value = "/service/provider/{id}")public String getPayInfo(@PathVariable("id") Integer id) {return  "服务提供者,支付接口,支付金额为:" + id + "元,端口:" + serverPort;}
}

2.4 启动类

创建一个启动类来启动服务提供者:

@SpringBootApplication
@EnableDiscoveryClient
public class ProviderStater {public static void main(String[] args) {SpringApplication.run(ProviderStater.class, args);}
}

3. 创建服务消费者

接下来,我们创建一个服务消费者,它将使用 OpenFeign 调用服务提供者的接口。

3.1 创建 Spring Boot 项目

创建一个新的 Spring Boot 项目,并添加以下依赖:

    <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.5.RELEASE</version><relativePath/> <!-- lookup parent from repository --><!-- lookup parent from repository --></parent><dependencies>
<!--        <dependency>-->
<!--            <groupId>com.alibaba.cloud</groupId>-->
<!--            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>-->
<!--        </dependency>--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><!--SpringBoot通用依赖模块--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency></dependencies><dependencyManagement><dependencies><!--SpringCloud依赖,一定要放到dependencyManagement中,起到管理版本的作用即可--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Hoxton.SR8</version><type>pom</type><scope>import</scope></dependency><!--SpringCloudAlibaba依赖--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.2.3.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>

3.2 配置 Nacos

在 application.yml 文件中配置 Nacos 服务地址:

server:port: 9080spring:application:name: service-consumercloud:nacos:discovery:server-addr: localhost:8848

3.3 启用 Feign 客户端

在启动类上添加 @EnableFeignClients 注解:

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class ConsumerStarter {public static void main(String[] args) {SpringApplication.run(ConsumerStarter.class, args);}
}

3.4 定义 Feign 客户端接口

创建一个接口,并使用 @FeignClient 注解来指定服务提供者的名称:

@FeignClient(name = "service-provider" ) // 指定提供者服务的名称)
public interface ProviderService {@GetMapping("/service/provider/{id}")String getPayInfo(@PathVariable("id") Integer id);
}

3.5 使用 Feign 客户端

在控制器中注入并使用 Feign 客户端:注: 下面主要查看 paymentInfo2方法代码即可;

@RestController
public class ConsumerController {@Resourceprivate RestTemplate restTemplate;@Resourceprivate ProviderService providerService;@GetMapping("/consumer/{id}")public String paymentInfo(@PathVariable("id") Integer id) {String result = restTemplate.getForObject("http://service-provider" + "/service/provider/" + id, String.class);return result;}@GetMapping("/consumer2/{id}")public String paymentInfo2(@PathVariable("id") Integer id) {return providerService.getPayInfo(id);}
}

下面是方法 paymentInfo 使用的RestTemplate配置类

@Configuration
public class RestTemplateConfig {@Bean@LoadBalanced //赋予RestTemplate负载均衡的能力public RestTemplate restTemplate() {return new RestTemplate();}
}

 项目主要结构如下:

4. 测试

首先保证nacos服务已启动,接着启动服务提供者和服务消费者,

然后访问服务消费者的接口,例如 localhost:9080/consumer2/10

返回结果如下:

总结

通过以上步骤,我们成功地将 Nacos 与 OpenFeign 整合,实现了服务提供者与服务消费者之间的远程调用。这种架构模式不仅简化了服务调用的过程,还提高了系统的可扩展性和可维护性。

关键字:nacos 整合 openfeign实现远程调用

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: