最近尝试写自己项目用到了jdk-21,然后了解到了目前较新的调用外部接口资源的方式是通过 WebClient 来简化以前 RestTemplate 比较复杂的写法
在实现过程中,因为我测试的一个接口其返回的数据很多,1m以上,webClient抛出了如下的异常:
搜索了很多解决方式,比较常见的blog都是通过修改yml的codes的配置来实现的(甚至有的还不生效),但是这种方式,即使生效也显然是这个服务全局的一个配置,而我们其他调用中,并不会使用到如此大的缓冲区,如果存在某个请求量很大的服务,可能造成oom的风险。 后面找到了一种可以在当前调用接口时配置的解决方式:
builder实例化 WebClient 的时候,加一个对codes的配置即可:
WebClient webClient = WebClient.builder().baseUrl("{your_domain}")
.codecs(codecs -> codecs.defaultCodecs().maxInMemorySize(500 * 1024)).build();