本文主要是介绍Spring Cloud、Spring Cloud LoadBalancer、Nacos 和 OpenFeign整合,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
版本
- Spring Cloud 3.1.1
- spring cloud loadbalancer 3.1.1
- nacos 2021.1
- open feign 3.1.1
引入依赖
在项目的 pom.xml 文件中添加相关依赖:
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
配置Nacos
在 application.yml 中配置Nacos服务发现和Feign的相关设置:
spring:application:name: service-consumer # 当前服务名cloud:nacos:discovery:server-addr: localhost:8888 # Nacos服务地址loadbalancer:retry: true # 启用重试机制
feign:client:config:default:connect-timeout: 5000read-timeout: 5000
主应用类
在主应用类中启用Feign客户端和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
@EnableFeignClients
@EnableDiscoveryClient
public class ServiceConsumerApplication {public static void main(String[] args) {SpringApplication.run(ServiceConsumerApplication.class, args);}
}
创建Feign客户端接口
定义一个接口,用于调用另一个服务的API:
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;@FeignClient(name = "service-provider") // 这里的name是被调用服务的名称
public interface ServiceProviderClient {@GetMapping("/api/hello")String sayHello(@RequestParam(name = "name") String name);
}
使用Feign客户端
在你的控制器或服务中使用Feign客户端进行服务调用:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
public class ConsumerController {@Autowiredprivate ServiceProviderClient serviceProviderClient;@GetMapping("/hello")public String hello(@RequestParam(name = "name") String name) {return serviceProviderClient.sayHello(name);}
}
配置Nacos服务注册和发现
确保在被调用的服务(例如service-provider)的 application.yml 中配置了Nacos服务注册:
spring:application:name: service-providercloud:nacos:discovery:server-addr: localhost:8888 # 注册中心地址
在 service-provider 项目的主应用类中也需要启用服务发现:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication
@EnableDiscoveryClient
public class ServiceProviderApplication {public static void main(String[] args) {SpringApplication.run(ServiceProviderApplication.class, args);}
}
并在service-provider项目中实现对应的控制器方法:
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
public class ProviderController {@GetMapping("/api/hello")public String sayHello(@RequestParam(name = "name") String name) {return "Hello, " + name + "!";}
}
启动服务
启动Nacos Server后,依次启动service-provider和service-consumer服务。访问service-consumer服务的 /hello 接口,验证服务间调用是否成功。
例如,访问 http://localhost:8090/hello?name=World 应该会调用service-provider服务的API,并返回 “Hello, World!”。
通过上述步骤,你已经成功整合了Spring Cloud、Spring Cloud LoadBalancer、Nacos和OpenFeign,实现了微服务之间的调用。
这篇关于Spring Cloud、Spring Cloud LoadBalancer、Nacos 和 OpenFeign整合的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!