使用Feign实现服务的消费者
我们在第7章已经将天气预报系统的所有功能都拆分为微服务。其中,也遗留了三个“TODO”项。
天气数据采集微服务在天气数据同步任务中,依赖于城市数据API微服务。
天气预报微服务查询天气信息,依赖于天气数据API微服务。
天气预报微服务提供的城市列表,依赖于城市数据API微服务。
这三个“TODO”项都需要调用外部系统的API。在本节我们将通过使用Feign来实现调用外部的RESTful服务。
天气数据采集微服务使用Feign
作为演示,我们将基于老的天气数据采集微服务msa-weather-collection-eureka进行修改,成为新的具备Feign功能的微服务msa-weather-collection-eureka-feign。
1.项目配置
为了使用Feign,在 build.gradle文件中增加如下配置。
2.启用Feign
要启用Feign,在应用的根目录的Application类上添加org.springframework.cloud.netflix.fcign.EnableFeignClients注解即可。
3.修改WeatherDataSyncJob
老的方法是伪造了一个城市数据。
这里,我们将使用Feign来从城市数据API微服务msa-weather-city-cureka中获取城市的信息。
首先,我们要定义一个Feign客户端CityClient。
CityClient在@FeignClient注解中指定了需要访问的应用的名称。
其次,我们在需要获取外部服务的WeatherDataSyncJob类中,使用CityClient接口即可。
4.修改项目配置
最后,修改application.properties。将其修改为如下配置。
天气预报微服务使用Feign
的具备Feign功能的微服务msa-weather-report-eureka-feign。
1.项目配置
为了使用Feign,在 build.gradle文件中增加如下配置。
2.启用Feign
要启用Feign,在应用的根目录的Application类上添加org.springframework.cloud.netflix.feign.EnableFeignClients注解即可。
3.定义Feign客户端
首先,我们要定义一个Feign客户端CityClient,来从城市数据API微服务msa-weather-city-eureka中获取城市的信息。
其次,我们再定义一个Feign客户端WeatherDataClient,来从天气数据API微服务msa-weather-data-eureka中获取天气的数据。
4.修改天气预报服务
修改天气预报服务WeatherReportServicelmpl,将原有的仿造的数据改为从Feign客户端获取天气数据API微服务提供的数据。
5.修改天气预报控制器
修改天气预报控制器WeatherReportController,将原有的伪造的城市数据改为由CityClient来获
取城市数据API微服务中的城市数据。
6.修改项目配置
最后,修改application.properties。将其修改为如下配置。
源码
本节示例所涉及的源码,见micro-weather-eureka-server、msa-weather-data-eureka和msa-weather-city-eureka,以及msa-weather-collection-eureka-feign和 msa-weather-report-eureka-feign。
本篇文章内容给大家讲解的是使用Feign实现服务的消费者
下篇文章给大家讲解实现服务的负载均衡及高可用;
觉得文章不错的朋友可以转发此文关注小编;
感谢大家的支持
领取专属 10元无门槛券
私享最新 技术干货