【解决方法】Dubbo报错Data length too large

7,063 阅读1分钟

问题:

Data长度超过设置参数的最大值

cause: java.io.IOException: Data length too large: 10008608, max payload: 8388608, channel: NettyChannel [channel=[id: 0x09396776, /...]]
java.io.IOException: Data length too large: 10008608, max payload: 8388608, channel: NettyChannel [channel=[id: 0x09396776, /...]]
	at com.alibaba.dubbo.remoting.transport.AbstractCodec.checkPayload(AbstractCodec.java:49)
	at com.alibaba.dubbo.remoting.exchange.codec.ExchangeCodec.encodeResponse(ExchangeCodec.java:285)
	at com.alibaba.dubbo.remoting.exchange.codec.ExchangeCodec.encode(ExchangeCodec.java:77)
	at com.alibaba.dubbo.rpc.protocol.dubbo.DubboCountCodec.encode(DubboCountCodec.java:39)
	at com.alibaba.dubbo.remoting.transport.netty.NettyCodecAdapter$InternalEncoder.encode(Net

发现问题:

当dubbo服务提供层向消费层传输大数据容量的对象时,会受到Dubbo的限制。

解决问题:

第一种方案

修改提供方的dubbo配置, 在dubbo.properties 中增加如下

dubbo.protocol.dubbo.payload=11557050(默认为8M,即8388608

第二种方案

在dubbo-provider.xml文件配置

<dubbo:provider id="payload" payload="11557050"/>