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

做直播网站宽带建设工程管理有限公司

做直播网站宽带,建设工程管理有限公司,外包公司要不要去,网站开发教程PDF微盘下载目录 1、问题背景 2、分析源码过程 3、解决办法 最近在测试环境spring cloud gateway突然出现了异常#xff0c;在这里记录一下#xff0c;直接上干货 1、问题背景 测试环境spring cloud gateway遇到以下异常 DataBufferLimitException: Exceeded limit on max bytes t…目录 1、问题背景 2、分析源码过程 3、解决办法 最近在测试环境spring cloud gateway突然出现了异常在这里记录一下直接上干货 1、问题背景 测试环境spring cloud gateway遇到以下异常 DataBufferLimitException: Exceeded limit on max bytes to buffer : 262144超出了缓冲区的最大字节数限制 乍一看问题很简单啊通过配置加大缓存区不就行了啊于是就在application.yml加了以下配置 #将缓存区设置为2m spring:codec:max-in-memory-size: 2MB 可是问题又出现了通过调试发现配置的max-in-memory-size在程序启动初始化确实是生效的。但是有业务调用的时候此参数的接收值为null,maxInMemorySize还是读取的默认值256K。 那咋整只能从源码入手了。 2、分析源码过程 通过异常日志可以定位到异常位置 后来发现我们自定义的拦截器获取body的信息是获取方式代码如下 因为HandlerStrategies.withDefaults() 是每次都需要重新创建对象并非是spring注入的对象所以每次获取的都是默认值导致配置不生效。 3、解决办法 在我们自定的拦截器中注入ServerCodecConfigurer类通过该类获取配置。这样获取到的就是我们在application.yml中配置的缓存区配置的字节数限制了。 具体代码 Component Slf4j public class RequestFilter implements GlobalFilter, Ordered {Overridepublic int getOrder() {return OrderedConstant.HIGHEST_PRECEDENCE;}//手动注入ServerCodecConfigurerAutowiredServerCodecConfigurer codecConfigurer;Overridepublic MonoVoid filter(ServerWebExchange exchange, GatewayFilterChain chain) {StopWatch stopWatch new StopWatch();stopWatch.start();long startTime System.currentTimeMillis();try {final Log logDTO new Log();ServerHttpRequest request exchange.getRequest();// 设置X-Request-IdAtomicReferenceString requestId new AtomicReference(GenerateIdUtils.requestIdWithUUID());ConsumerHttpHeaders httpHeadersConsumer httpHeaders - {String headerRequestId request.getHeaders().getFirst(HeaderConstant.REQUEST_ID);if (!Strings.isNullOrEmpty(headerRequestId)) {requestId.set(headerRequestId);}logDTO.setRequestId(requestId.get());httpHeaders.set(HeaderConstant.REQUEST_ID, requestId.get());httpHeaders.set(HeaderConstant.START_TIME_KEY, String.valueOf(startTime));};// codecConfigurer.getReaders()获取pplication.yml中配置的缓存区配置的字节数ServerRequest serverRequest ServerRequest.create(exchange,codecConfigurer.getReaders());URI requestUri request.getURI();String uriQuery requestUri.getQuery();String url requestUri.getPath() (!Strings.isNullOrEmpty(uriQuery) ? ? uriQuery : );HttpHeaders headers request.getHeaders();MediaType mediaType headers.getContentType();String method request.getMethodValue().toUpperCase();// 原始请求体final AtomicReferenceString requestBody new AtomicReference();final AtomicBoolean newBody new AtomicBoolean(false);if (mediaType ! null LogHelper.isUploadFile(mediaType)) {requestBody.set(上传文件);} else {if (method.equals(GET)) {if (!Strings.isNullOrEmpty(uriQuery)) {requestBody.set(uriQuery);}} else {newBody.set(true);}}logDTO.setLevel(Log.LEVEL.INFO);logDTO.setRequestUrl(url);logDTO.setRequestBody(requestBody.get());logDTO.setRequestMethod(method);logDTO.setIp(IpUtils.getClientIp(request));ServerHttpRequest serverHttpRequest exchange.getRequest().mutate().headers(httpHeadersConsumer).build();ServerWebExchange build exchange.mutate().request(serverHttpRequest).build();return build.getSession().flatMap(webSession - {logDTO.setSessionId(webSession.getId());if (newBody.get() headers.getContentLength() 0) {MonoString bodyToMono serverRequest.bodyToMono(String.class);return bodyToMono.flatMap(reqBody - {logDTO.setRequestBody(reqBody);// 重写原始请求ServerHttpRequestDecorator requestDecorator new ServerHttpRequestDecorator(exchange.getRequest()) {Overridepublic FluxDataBuffer getBody() {NettyDataBufferFactory nettyDataBufferFactory new NettyDataBufferFactory(new UnpooledByteBufAllocator(false));DataBuffer bodyDataBuffer nettyDataBufferFactory.wrap(reqBody.getBytes());return Flux.just(bodyDataBuffer);}};return chain.filter(exchange.mutate().request(requestDecorator).build()).then(LogHelper.doRecord(logDTO));});} else {return chain.filter(exchange).then(LogHelper.doRecord(logDTO));}});} catch (Exception e) {log.error(请求日志打印出现异常, e);return chain.filter(exchange);}}}
http://www.w-s-a.com/news/603593/

相关文章:

  • 网站名称填写什么广告网络推广怎么做
  • 做网站架构需要注意什么百度竞价排名推广
  • 网站接口设置地税局内网网站建设
  • 谷歌提交网站入口wordpress前台自动登录
  • 规模以上工业企业的标准是什么洛阳霞光seo网络公司
  • 怎样用文本建一个网站做美容美发学校网站公司
  • 南宁企业网站建设制作芜湖网站建设推广
  • 泉州市建设局网站公示深圳建站公司好坏
  • 如何搭建网站教程一个人制作网站
  • 网站开发专业都有哪些课程广州安全教育平台账号找回
  • 网站调整方案适合平面设计师的网站
  • 免费服务器建立网站用html5做的旅游网站代码
  • 学校英语网站栏目名称WordPress禁用邮件注册
  • 手机qq网页版网站沧州手机网站开发
  • 深圳罗湖网站设计公司建设的网站属于无形资产吗
  • 网站开发python西安网站建站品牌
  • 网站开发商标属于哪一类做网站还有钱赚吗
  • 做设计的搜素材上什么网站好设计公司画册设计哪家好
  • 视频网站开发需要什么语言做ui设计一年后年薪多少
  • 网站服务器维护费用统一企业官方网站
  • 网站如何调用手机淘宝做淘宝客呼和浩特网站运营公司
  • 做推广可以上那些网站网页游戏排行榜2014前十名
  • 国外网站备案流程企业网站 流程
  • 重庆网站建设letide童程童美少儿收费价目表
  • 苏州建站仿站东莞排名推广
  • 大中小网站的区分wordpress个人主页主题
  • 商务网站建设的可行性分析包括小程序源码网免费
  • 永州网站建设收费标准重庆网站建设公司夹夹虫专业
  • python做网站多少钱wordpress 2.8
  • 深圳网站平台网站开发工作程序怎么写