使用Nacos实现服务注册发现,使用feign进行远程调用

Nacos的本地部署不做详细介绍,下面主要记录一下使用Nacos注册、暴露服务,使用feign进行远程调用的过程:
1、首先找到一个项目作为生产者,即服务提供者,进行配置后注册到Nacos注册中心,注意:在这里插入图片描述
此处的name要注意,他是消费者消费服务查找服务的关键字。
生产者的启动类要添加一个注解@EnableDiscoveryClient,实现负载均衡
在这里插入图片描述
具体的服务接口:
在这里插入图片描述
2、消费者注册到Nacos之后,可以看一下控制台
在这里插入图片描述
我们发现服务已经注册到Nacos,
3、下面开始消费者的注册,同样是需要一些配置,不做详细介绍,这里消费者的启动类也需要添加一个注解@EnableFeignClients,这是为了使用feign实现远程调用
在这里插入图片描述
4、进行远程调用
首先把服务引入消费者项目中,如下图,使用@FeignClient注解,name属性是服务者的name,即注册到Nacos的name,下面声明的接口注意Mapping地址要与服务者暴露的地址一样,这样看feign就像实现了地址的映射,声明的接口名称、参数与服务者暴露的接口一致后,即完成了服务的引入,然后就可以在消费者端进行调用。
在这里插入图片描述
注意:此处使用Nacos作为注册中心时,若服务端有多台机器,调试时想指定一台自己的机器,只需要在@FeignClient注解中添加一条URL属性即可,例如:
在这里插入图片描述
5、下面进行测试
在这里插入图片描述
在消费者端写一个访问入口,直接调用刚刚声明的接口方法,下面就可以启动项目了。
注意:接口定义时引入的fallback属性是指定MiddGatewayGoodsServiceFallback类,来进行远程调用的熔断和降级处理
在这里插入图片描述
在这里插入图片描述
6、启动消费者
在这里插入图片描述
在这里插入图片描述
我们发现消费者已经注册到Nacos,下面进行调用测试,使用post输入地址
在这里插入图片描述
可以看到使用Nacos结合feign进行服务注册、发现以及远程调用已经成功。

使用Nacos整合Feign进行HTTPS远程调用,需要以下步骤: 1. 在Nacos注册服务,并启用HTTPS协议。 2. 在Feign的配置添加HTTPS相关的配置,如下: ```java @Configuration public class FeignConfig { @Bean public Client feignClient() { return new OkHttpClient.Builder() .sslSocketFactory(createSSLSocketFactory()) .hostnameVerifier(createHostnameVerifier()) .build(); } private SSLSocketFactory createSSLSocketFactory() { try { SSLContext sslContext = SSLContext.getInstance("TLS"); sslContext.init(null, new TrustManager[]{new X509TrustManager() { @Override public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException { } @Override public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException { } @Override public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[0]; } }}, new SecureRandom()); return sslContext.getSocketFactory(); } catch (NoSuchAlgorithmException | KeyManagementException e) { throw new RuntimeException(e); } } private HostnameVerifier createHostnameVerifier() { return (s, sslSession) -> true; } } ``` 3. 在Feign接口上添加@FeignClient注解,并指定Nacos注册服务名和HTTPS协议,如下: ```java @FeignClient(name = "service-provider", url = "https://service-provider", configuration = FeignConfig.class) public interface ServiceProviderClient { @GetMapping("/hello") String sayHello(); } ``` 这样就可以使用Nacos整合Feign进行HTTPS远程调用了。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值