喵星软件园提供热门手机游戏下载,最新手机游戏攻略!

《Feign》游戏最低配置要求介绍 游戏配置条件高吗,

时间:2023-10-03 22:30:03 来源: 浏览:

大牛教你学微服务架构开发实战:使用Feign实现服务的消费者

使用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文件中增加如下配置。

dependencies i/l ...//添加Spring Cloud Starter OpenFeign依赖compile( 'org.springframework.cloud:spring-cloud-starter-openfeign')}

2.启用Feign

要启用Feign,在应用的根目录的Application类上添加org.springframework.cloud.netflix.fcign.EnableFeignClients注解即可。

package com.waylau.spring.cloud.weather;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;import org.springframework.cloud.netflix.feign.EnableFeignClients;*主应用程序.**@since 1.o.0 2017年11月05日* @author <a href="https://waylau.com">Way Lau</a>*/@SpringBootApplication@EnableDiscoveryClient@EnableFeignClientspublic class Application{public static void main(String <> args) {SpringApplication.run(Application.class, args);}

3.修改WeatherDataSyncJob

老的方法是伪造了一个城市数据。

List<City> cityList =null;try{//TODO调用城市数据APIcityList = new ArrayList<>();City city = new City();city.setCityId("101280601");cityList.add(city);}catch(Exception e){logger.error("获取城市信息异常!",e);throw new RuntimeException("获取城市信息异常!",e);}

这里,我们将使用Feign来从城市数据API微服务msa-weather-city-cureka中获取城市的信息。

首先,我们要定义一个Feign客户端CityClient。

package com.waylau.spring.cloud.weather.service;import java.util.List;import org.springframework.cloud.netflix.feign.FeignClient;import org.springframework.web.bind.annotation.GetMapping;import com.waylau.spring.cloud.weather.vo.City;/*★*访问城市信息的客户端.**@since 1.0.0 2017年11月5日* @author <a href="https://waylau.com">Way Lau</a>*/@FeignClient("msa-weather-city-eureka")public interface CityClient {@GetMapping("/cities")List<City> listCity() throws Exception;}

CityClient在@FeignClient注解中指定了需要访问的应用的名称。

其次,我们在需要获取外部服务的WeatherDataSyncJob类中,使用CityClient接口即可。

package com.waylau.spring.cloud.weather.job;import java.util.List;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;import org.slf4j.Logger;import org.slf4j·LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.scheduling.quartz.QuartzJobBean;import com.waylau.spring.cloud.weather.service.CityClient;import com.waylau.spring.cloud.weather.service.WeatherDataCollectionService;import com.waylau.spring.cloud.weather.vo.City;/***天气数据同步任务.**@since 1.o.o 2017年10月29日* @author <a href="https://waylau.com">Way Lau</a>*/public class WeatherDataSyncJob extends QuartzJobBeanprivate final static Logger logger = LoggerFactory.getLogger(WeatherDataSyncJob .class);Autowiredprivate WeatherDataCollectionService weatherDataCollectionService;Autowiredprivate CityClient cityClient;@overrideprotected void executeInternal (JobExecutionContext context) throwsJobExecutionException {logger.info("Start天气数据同步任务");//由城市数据API微服务来提供数据List<City> cityList = null;try {//调用城市数据APIcityList = cityClient.listCity();>catch(Exception e)logger.error("获取城市信息异常!",e);throw new RuntimeException("获取城市信息异常!",e);}for (City city :cityList){String cityId= city.getcityId();logger.info("天气数据同步任务中,cityid:" +cityId);//根据城市ID同步天气数据weatherDataCollectionService.syncDataByCityId(cityId);logger.info("End 天气数据同步任务");}}

4.修改项目配置

最后,修改application.properties。将其修改为如下配置。

spring.application.name: msa-weather-collection-eureka-feigneureka.client.serviceUrl.defaultZone:http://localhost:8761/eureka/feign.client.config.feignName.connectTimeout:5000feign.client.config.feignName.readTimeout:5000


天气预报微服务使用Feign

的具备Feign功能的微服务msa-weather-report-eureka-feign。

1.项目配置

为了使用Feign,在 build.gradle文件中增加如下配置。

dependencies {// ...作为演示,我们将基于老的天气数据采集微服务msa-weather-report-cureka进行修改,成为新//添加Spring Cloud starter OpenFeign依赖compile('org.springframework.cloud:spring-cloud-starter-openfeign'))

2.启用Feign

要启用Feign,在应用的根目录的Application类上添加org.springframework.cloud.netflix.feign.EnableFeignClients注解即可。

package com.waylau.spring.cloud.weather;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;import org.springframework.cloud.netflix.feign.EnableFeignClients;***主应用程序.**@since 1.o.0 2017年11月05日* author <a href="https://waylau.com">Way Lau</a>*/@SpringBootApplication@EnableDiscoveryClient@EnableFeignClientspublic class Application{public static void main(String<> args) {SpringApplication.run(Application.class,args);}}

3.定义Feign客户端

首先,我们要定义一个Feign客户端CityClient,来从城市数据API微服务msa-weather-city-eureka中获取城市的信息。

package com.waylau.spring.cloud.weather.service;import java.util.List;import org.springframework.cloud.netflix.feign.Eeignclient;import org.springframework.web.bind.annotation.GetMapping;import com.waylau.spring.cloud.weather.vo.City;/***访问城市信息的客户端.*@since 1.o.0 2017年11月5日author <a href="https://waylau.com">Way Lau</a>*/@FeignClient( "msa-weather-city-eureka")public interface CityClient{@GetMapping("/cities")List<City> listCity()throws Exception;}

其次,我们再定义一个Feign客户端WeatherDataClient,来从天气数据API微服务msa-weather-data-eureka中获取天气的数据。

package com.waylau.spring.cloud.weather.service;import org.springframework.cloud.netflix.feign.FeignClient;import com.waylau.spring.cloud.weather.vo.WeatherResponse;★**访问天气数据的客户端.**@since 1.o.02017年11月5日*@author <a href="https://waylau.com">Way Lau/a>*/FeignClient( "msa-weather-data-eureka")public interface WeatherDataclient {/***根据城市ID查询天气数据**@param cityId*@return*/@GetMapping("/weather/cityId/{cityId}")WeatherResponse getDataByCityId(@PathVariable("cityId") StringcityId);}

4.修改天气预报服务

修改天气预报服务WeatherReportServicelmpl,将原有的仿造的数据改为从Feign客户端获取天气数据API微服务提供的数据。

package com.waylau.spring.cloud.weather.service;import org.springframework.beans.factory.annotation.Autowired;irmport org.springframework.stereotype.Service;import com.waylau.spring.cloud.weather.vo.Weather;import com.waylau.spring.cloud.weather.vo.WeatherResponse;***天气预报服务.**@since 1.o.0 2017年11月05日*@author <a href="https://waylau.com">Way Lau</a>*/@servicepublic class WeatherReportServiceimpl implements WeatherReportService{Autowiredprivate WeatherDataClient weatherDataClient;@overridepublic Weather getDataByCityId(String cityId)//由天气数据AP工微服务来提供数据WeatherResponse response = weatherDataclient.getDataByCityId(cityId);return response.getData(;}

5.修改天气预报控制器

修改天气预报控制器WeatherReportController,将原有的伪造的城市数据改为由CityClient来获

取城市数据API微服务中的城市数据。

package com.waylau.spring.cloud.weather.controller;import java.util.List;import org.slf4j-Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.servlet.ModelAndView;import com.waylau.spring.cloud.weather.service.CityClient;import com.waylau.spring.cloud.weather.service.WeatherReportService;import com.waylau.spring.cloud.weather.vo.City;/***天气预报API.**@since 1.0.0 2017年10月29日@author <a href="https://waylau.com" >Way Lau</a>*/RestController@RequestMapping("/report")public class WeatherReportController {private final static Logger logger = LoggerFactory.getLogger(WeatherReportController.class);@Autowired  private CityClient cityClient;@Autowiredprivate WeatherReportService weatherReportService;@GetMapping("/cityId/{cityId} ")public ModelAndView getReportByCityId (@PathVariable ("cityId") StringcityId, Model model) throws Exception {//由城市数据API微服务来提供数据List<City> cityList =null;try{//调用城市数据APIcityList=cityClient.listCity();}catch(Exception e)logger.error("获取城市信息异常!",e);throw new RuntimeException("获取城市信息异常!",e);}model.addAttribute("title","老卫的天气预报");model.addAttribute("cityld",cityId);model.addAttribute("cityList",cityList);model.addAttribute ("report", weatherReportService.getDataByCityId(cityId));return new ModelAndView("weather/report", "reportModel",model);}

6.修改项目配置

最后,修改application.properties。将其修改为如下配置。

#热部署静态文件spring.thymeleaf.cache=falsespring.application.name: msa-weather-report-eureka-feigneureka.client.serviceUrl.defaultZone: http://localhost:8761/eureka/feign.client.config.feignName.connectTimeout:5000feign.client.config.feignName.readTimeout:5000


源码

本节示例所涉及的源码,见micro-weather-eureka-server、msa-weather-data-eureka和msa-weather-city-eureka,以及msa-weather-collection-eureka-feign和 msa-weather-report-eureka-feign。

本篇文章内容给大家讲解的是使用Feign实现服务的消费者

  1. 下篇文章给大家讲解实现服务的负载均衡及高可用;
  2. 觉得文章不错的朋友可以转发此文关注小编;
  3. 感谢大家的支持

标题:《Feign》游戏最低配置要求介绍 游戏配置条件高吗,
链接:https://www.miaoshengapp.cn/yxgl/78154.html
版权:文章转载自网络,如有侵权,请联系删除!
资讯推荐
《暗黑破坏神4》噩梦徽记升级方法攻略
《暗黑破坏神4》噩梦徽记升级方法攻略

近日有这么一个问题,这个问题就是《暗黑破坏

2023-06-20
跃迁旅人兑换码大全
跃迁旅人兑换码大全

跃迁旅人已经进行公测上线了,作为一款二次元

2022-12-22
《原神》3.1版本神铸赋形祈愿怎么样  神铸赋形祈愿活动公告
《原神》3.1版本神铸赋形祈愿怎么样 神铸赋形祈愿活动公告

原神3.1版本的武器池子来啦,可能有的小伙伴

2022-12-22
jackd(jackd安卓版下载哪个版本)
jackd(jackd安卓版下载哪个版本)

今天给各位分享jackd的攻略,其中也会对jackd

2023-09-01
《暗黑破坏神4》枯萎威能获取方法
《暗黑破坏神4》枯萎威能获取方法

暗黑破坏神4近期开放了全新活动,在活动期间

2023-08-03
英雄联盟手游超武乾坤孤拳瑟提获得方法
英雄联盟手游超武乾坤孤拳瑟提获得方法

英雄联盟手游将会在3.4版本上线瑟提新皮肤,

2022-12-22