OpenFeign調用NACOS服務訪問接口
1、創建order-consumer-demo消費服務,引入POM包(可以是其他服務應該,本文直接創建的order消費服務demo)
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> <version>2.2.6.RELEASE</version> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.2.2.RELEASE</version> </dependency>
2、yml配置NACOS系統信息
spring: application: name: order-consumer-demo cloud: nacos: discovery: server-addr: localhost:8848 namespace: public
3、新增openfeign接口和fallback異常處理類。
@FeignClient(name = "order-service-demo", fallback = OrderServiceDemoFeignClientFallback.class) public interface OrderServiceDemoFeignClient { @GetMapping("/demo/test") String test(); }
public class OrderServiceDemoFeignClientFallback implements OrderServiceDemoFeignClient { @Override public String test() { return "error"; } }
4、代碼配置
新增服務注冊“@EnableDiscoveryClient”和openfeign注解“@EnableFeignClients”。
5、運行應用
訪問成功結果:
訪問失敗結果(如:服務端異常或者服務不在線):
RestTemplate調用NACOS服務訪問接口
1、DemoApplication.java類新增代碼
@LoadBalanced @Bean public RestTemplate restTemplate() { return new RestTemplate(); }
2、DemoController.java類新增代碼
@GetMapping( value = "testRestTemplate") public String getRestTemplateTest() { //通過的負載均衡接口獲取服務實例信息 ServiceInstance serviceInstance = loadBalancerClient.choose("order-service-demo"); //直接寫url也可以 http://order-service-demo/demo/test String url = "http://" + serviceInstance.getServiceId() + ":" + serviceInstance.getPort() + "/demo/test"; String result = restTemplate.getForObject(url, String.class); return "【RestTemplate】" + result; }
3、訪問運行結果