Dubbo ExceedPayloadLimitException

Data length too large

这个异常的详细堆栈信息如下所示:

Caused by: org.apache.dubbo.remoting.transport.ExceedPayloadLimitException: Data length too large: 11557979, max payload: 11557050, channel: NettyChannel [channel=[id: 0x59059885, L:/172.30.0.3:50822 - R:/172.30.0.3:20880]]

已经从8388608 改到 11557979 依旧报错

1
2
3
4
5
6
7
8
@Bean
public ProviderConfig providerConfig() {
ProviderConfig config = new ProviderConfig();
config.setRetries(0);
config.setTimeout(60000);
config.setPayload(11557979);
return config;
}

本来想从 11557979 直接改到 104857600 100兆

仔细想想不对

这里是 请求或者响应的报文体长度超过了8k

我请求的内容应该没有这么长

检查了下

原来是之前写的 SpringCloud 整合 Dubbo (Link) #### 封装 dubbo 隐式传递

中写了一个 日志收集

这个调用时 同步数据 同步了一个多小时 产生了超过8兆的日志

而我为了日志追踪 把日志放在 dubbo 的请求参数中 导致了长度超过dubbo的限制

还有个类似 dubbo 抛不出自定义的异常 的问题

这个我已经自己写了一个异常过滤器(SpringCloud 整合 Dubbo # 异常传递) 但是偶尔还是有自定义异常 被认定为 Rpc 异常的问题

大概是我封装的依赖包 有时 几个微服务依赖的依赖包版本不相同 加密出来的jar包逻辑不同导致

有空再研究下