当前位置: 首页 > news >正文

青岛建设英文网站建设wordpress运行代码

青岛建设英文网站建设,wordpress运行代码,织梦网站建设培训,WordPress注册邮件美化相关组件概念 Ribbon#xff1a; Ribbon 是 Netflix开源的基于 HTTP 和 TCP 等协议负载均衡组件#xff1b;Ribbon 可以用来做客户端负载均衡#xff0c;调用注册中心的服务#xff1b; Feign#xff1a; Feign 是 Spring Cloud 组件中的一个轻量级 RESTful 的 HTTP 服务客…相关组件概念 Ribbon Ribbon 是 Netflix开源的基于 HTTP 和 TCP 等协议负载均衡组件Ribbon 可以用来做客户端负载均衡调用注册中心的服务 Feign Feign 是 Spring Cloud 组件中的一个轻量级 RESTful 的 HTTP 服务客户端Feign 内置了 Ribbon用来做客户端负载均衡去调用服务注册中心的服务Feign 的使用方式是使用 Feign 的注解定义接口调用这个接口就可以调用服务注册中心的服务Feign 本身不支持 Spring MVC 的注解它有一套自己的注解 OpenFeign OpenFeign 是 Spring Cloud 在 Feign 的基础上支持了 Spring MVC 的注解如 RequesMapping 等等。OpenFeign 的 FeignClient 可以解析 SpringMVC 的 RequestMapping 注解下的接口并通过动态代理的方式产生实现类实现类中做负载均衡并调用其他服务。 使用 OpenFeign 导入依赖 dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-openfeign/artifactIdversion${feign.version}/version /dependency启动类配置 SpringBootApplication EnableFeignClients public class FeignDemoApplication {public static void main(String[] args) {SpringApplication.run(Application.class, args);} }配置 FeignClient 接口 FeignClient(stores) public interface StoreClient {RequestMapping(method RequestMethod.GET, value /stores)ListStore getStores();RequestMapping(method RequestMethod.POST, value /stores/{storeId}, consumes application/json)Store update(PathVariable(storeId) Long storeId, Store store); }个性化配置 Feign 1. FeignClient 注解配置 public interface FeignClient {/*** FeignContext 中 Bean 名称若使用 Ribbon 则作为服务提供方名称用于服务发现*/AliasFor(name)String value() default ; /*** 替代 value 成为 Client Bean 名称*/String contextId() default ;AliasFor(value)String name() default ;DeprecatedString qualifier() default ;/*** Client Bean 别名*/String[] qualifiers() default {};/*** 配置绝对 URL 或可解析的主机名协议是可选的*/String url() default ;/*** 404是否应该解码而不是抛出虚假异常*/boolean decode404() default false;/*** 自定义配置类*/Class?[] configuration() default {};/*** 定义容错的处理类也就是回退逻辑* fallback 的类必须实现 Feign Client 的接口无法知道熔断的异常信息*/Class? fallback() default void.class;/*** 定义容错的处理可以知道熔断的异常信息。可以自定义fallbackFactory*/Class? fallbackFactory() default void.class;/*** 所有方法级映射使用的路径前缀*/String path() default ;/*** 对应的是 Primary 注解默认为 true*/boolean primary() default true; }2. 定义 Feign 配置类 public class FeignConfig {/*** 配置 FeignClient 合约类型* 1. SpringMvcContract默认* 2. Default*/Beanpublic Contract feignContract() {return new feign.Contract.Default();} /*** 配置 Feign Client 类型* 1. Client.Default默认内部使用 HttpURLConnnection 完成URL请求处理* 2. ApacheHttpClient内部使用 Apache httpclient 完成请求处理* 3. OkHttpClient内部使用 OkHttp3 完成请求处理* 4. FeignBlockingLoadBalancerClient在其他 client 基础上封装 ribbon 技术完成请求处理* 若引入 Spring Cloud LoadBalancer则使用 FeignBlockingLoadBalancerClient。* 如果无则使用默认 Feign 客户端。*/Beanpublic Client feignClient() {return new Client.Default(null, null);// return new Client.Default(getSSLSocketFactory(), null);}/*** 停用 http ssl 证书检查*/private SSLSocketFactory getSSLSocketFactory() {try {SSLContext sslContext SSLContexts.custom().loadTrustMaterial(null, new TrustSelfSignedStrategy()).build();return sslContext.getSocketFactory();} catch (Exception ex) {throw new RuntimeException(ex);}}/*** 配置 Feign 日志级别* NONE默认不显示任何日志* BASIC: 仅记录请求方法、URL、响应状态码及执行时间* HEADERS除了BASIC中定义的信息之外还有请求头和响应头信息* FULL除了HEADERS中定义的信息之外还有请求的正文和响应数据*/Beanpublic Logger.Level feignLoggerLevel() {return Logger.Level.FULL;}/*** 配置 Feign 的超时时间 毫秒* connectTimeoutMillis 连接超时时间* readTimeoutMillis 请求处理时间*/Beanpublic Request.Options options() {return new Request.Options(5000,10000);}/*** 注入自定义的拦截器*/Beanpublic RequestInterceptor requestInterceptor() {return new RequestInterceptor(){Overridepublic void apply(RequestTemplate template) {System.out.println(执行拦截器....);}}} }3. 定义 Feign 配置文件 feign:client:config:your-feign-ame:connectTimeout: 5000readTimeout: 5000loggerLevel: BASICerrorDecoder: com.example.SimpleErrorDecoderretryer: com.example.SimpleRetryerdefaultQueryParameters:query: queryValuedefaultRequestHeaders:header: headerValuerequestInterceptors:- com.example.FooRequestInterceptor- com.example.BarRequestInterceptordecode404: falseencoder: com.example.SimpleEncoderdecoder: com.example.SimpleDecodercontract: com.example.SimpleContractokhttp:enabled: true logging:level:lxllyy.top.feign: debug4. 配置 Feign 请求透传 public class FeignConfig { Beanpublic RequestInterceptor requestInterceptor() {return new RequestInterceptor() {Overridepublic void apply(RequestTemplate template) {HttpServletRequest request getHttpServletRequest();if (request ! null) {//第一种 把header里所有的值都透传简单粗暴MapString, String headers getHeaders(request);for (String headerName : headers.keySet()) {template.header(headerName,getHeaders(getHttpServletRequest()).get(headerName));}//第二种 只针对性的传递想要的header里的值String x_access_token request.getHeader(x-access-token);if (StringUtils.hasText(x_access_token)) {template.header(x-access-token, x_access_token);}}}private HttpServletRequest getHttpServletRequest() {try {return((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();} catch (Exception e) {e.printStackTrace();return null;}}private MapString, String getHeaders(HttpServletRequest request) {MapString, String map new LinkedHashMap();EnumerationString enumeration request.getHeaderNames();while (enumeration.hasMoreElements()) {String key enumeration.nextElement();String value request.getHeader(key);map.put(key, value);}return map;}};} }5. 配置 Feign 异常处理 FeignClient(name service-provider1,fallback UserFeignClientFallback.class, // 不推荐fallbackFactory UserFeignClientFallbackFactory.class // 推荐 ) public interface UserFeignClient {RequestMapping(value /getNameById/{id},method RequestMethod.GET)String getNameById(PathVariable(id) Integer id); }Component Slf4j public class UserFeignClientFallback implements UserFeignClient{Overridepublic String getNameById(Integer str) {log.error(UserFeignClient #getNameById failed);return null;} }Component Slf4j public class UserFeignClientFallbackFactory implements FallbackFactoryUserFeignClient{Overridepublic UserFeignClient create(Throwable throwable) {log.error(异常原因:{}, throwable.getMessage(), throwable);return new UserFeignClient(){Overridepublic Object getNameById(Integer str) {//出现异常自定义返回内容保证接口安全return null;}};} }6. 配置 Feign FastJson public class MyFeignConfig {Beanpublic Encoder feignEncoder() {return new SpringEncoder(feignHttpMessageConverter());}Beanpublic Decoder feignDecoder() {return new SpringDecoder(feignHttpMessageConverter());}/*** 设置解码器为fastjson** return*/private ObjectFactoryHttpMessageConverters feignHttpMessageConverter() {final HttpMessageConverters httpMessageConverters new HttpMessageConverters(this.getFastJsonConverter());return () - httpMessageConverters;}private FastJsonHttpMessageConverter getFastJsonConverter() {FastJsonHttpMessageConverter converter new FastJsonHttpMessageConverter();ListMediaType supportedMediaTypes new ArrayList();MediaType mediaTypeJson MediaType.valueOf(MediaType.APPLICATION_JSON_UTF8_VALUE);supportedMediaTypes.add(mediaTypeJson);converter.setSupportedMediaTypes(supportedMediaTypes);FastJsonConfig config new FastJsonConfig();config.getSerializeConfig().put(JSON.class, new SwaggerJsonSerializer());config.setSerializerFeatures(SerializerFeature.DisableCircularReferenceDetect);converter.setFastJsonConfig(config);return converter;} }
http://www.pierceye.com/news/489203/

相关文章:

  • 昆明seocn整站优化网站建设如何报价
  • 网页设计模板免费网站WordPress生成网站地图
  • 做网站 侵权做外贸怎么看外国网站
  • 网站建设知识点的总结普通网站建设是什么
  • 杭州网站建设费用多少合肥高新城建设计院网站
  • 炫酷特效网站asa8.4 做网站映射
  • 郑州租赁房网站建设九江快乐城
  • 手机网站建站教育模板微信网站 教程
  • 网站的结构犀牛云做网站多少钱
  • 网站服务器用什么配置公司网站建设的视频教程
  • idea做网站网络营销与网站推广的区别
  • 建一家网站多少钱微信小程序在哪里查找
  • 东阳网站推广英文网站源码下载
  • 介绍湛江网站高端网站建设网站定制
  • 网站的特征包括哪些方面wordpress缓存插件 w3
  • 东莞专业网站营销wordpress新建页面模板
  • 做外贸学习网站智慧团建网页电脑版登录网站
  • 如何免费做一个网站攻略常州网站推广软件
  • 手机网站建站 服务器网站名称收录
  • 网站根 html网站建设 永灿 竞争
  • 网站建设费合同天津网站建设公司
  • 自己怎么做优惠卷网站购物网站建设需求模板下载
  • 上海智能网站建设公司可以做网站头像的图片
  • 怎样给网站做备案网站建设前端工程师岗位职责
  • 福州网站外包网站搭建设计合同
  • 有没有做专利导航运营的网站网站制作代理
  • 即墨网站建设地址邢台织梦模板建站
  • 贵阳网站建设运营网站的扁平化设计理念
  • 商务网站建设与维护(专21春)网站建设入门书籍
  • 免费室内设计素材网站wordpress 前台不显示内容