有没有什么方式可以配置dubbo的 max payload?
2018-08-12 00:00:02.133 [pipelineId = 24,taskName = transformWorker] ERROR c.a.o.s.c.core.impl.DefaultCommunicationClientImpl - call[10.10.100.81:2088] , retry[1] com.alibaba.dubbo.rpc.RpcException: Failed to invoke remote method: acceptEvent, provider: dubbo://10.10.100.81:2088/endpoint?acceptEvent.timeout=50000&client=netty&codec=dubbo&connections=30&iothreads=4&lazy=true&serialization=java&threads=50, cause: Data length too large: 8848345, max payload: 8388608, channel: NettyChannel [channel=[id: 0x3ebee14c, /10.10.100.154:39062 => /10.10.100.81:2088]] at com.alibaba.dubbo.rpc.protocol.dubbo.DubboInvoker.doInvoke(DubboInvoker.java:100) ~[dubbo-2.5.10-ctrip.2.jar:2.0.1] at com.alibaba.dubbo.rpc.protocol.AbstractInvoker.invoke(AbstractInvoker.java:142) ~[dubbo-2.5.10-ctrip.2.jar:2.0.1] at com.alibaba.dubbo.rpc.proxy.InvokerInvocationHandler.invoke(InvokerInvocationHandler.java:51) ~[dubbo-2.5.10-ctrip.2.jar:2.0.1] at com.alibaba.dubbo.common.bytecode.proxy1.acceptEvent(proxy1.java) ~[dubbo-2.5.10-ctrip.2.jar:2.0.1] at com.alibaba.otter.shared.communication.core.impl.dubbo.DubboCommunicationConnection.call(DubboCommunicationConnection.java:45) ~[shared.communication-4.2.15.jar:na] at com.alibaba.otter.shared.communication.core.impl.DefaultCommunicationClientImpl.call(DefaultCommunicationClientImpl.java:96) ~[shared.communication-4.2.15.jar:na] at com.alibaba.otter.node.common.communication.NodeCommmunicationClient.call(NodeCommmunicationClient.java:51) [node.common-4.2.15.jar:na] at com.alibaba.otter.node.etl.common.pipe.impl.rpc.RowDataRpcPipe.get(RowDataRpcPipe.java:60) [node.etl-4.2.15.jar:na] at com.alibaba.otter.node.etl.common.pipe.impl.RowDataPipeDelegate.get(RowDataPipeDelegate.java:146) [node.etl-4.2.15.jar:na] at com.alibaba.otter.node.etl.transform.TransformTask$1.run(TransformTask.java:77) [node.etl-4.2.15.jar:na] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_51] at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_51] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_51] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_51] at java.lang.Thread.run(Thread.java:744) [na:1.7.0_51] Caused by: com.alibaba.dubbo.remoting.RemotingException: Data length too large: 8848345, max payload: 8388608, channel: NettyChannel [channel=[id: 0x3ebee14c, /10.10.100.154:39062 => /10.10.100.81:2088]] at com.alibaba.dubbo.remoting.exchange.support.DefaultFuture.returnFromResponse(DefaultFuture.java:218) ~[dubbo-2.5.10-ctrip.2.jar:2.0.1] at com.alibaba.dubbo.remoting.exchange.support.DefaultFuture.get(DefaultFuture.java:137) ~[dubbo-2.5.10-ctrip.2.jar:2.0.1] at com.alibaba.dubbo.remoting.exchange.support.DefaultFuture.get(DefaultFuture.java:111) ~[dubbo-2.5.10-ctrip.2.jar:2.0.1] at com.alibaba.dubbo.rpc.protocol.dubbo.DubboInvoker.doInvoke(DubboInvoker.java:95) ~[dubbo-2.5.10-ctrip.2.jar:2.0.1] ... 14 common frames omitted
原提问者GitHub用户payonxp
在Dubbo中,可以通过配置payload
参数来限制Dubbo的最大负载大小。payload
参数定义了Dubbo消息的最大字节数。当消息的负载大小超过该值时,Dubbo将拒绝处理该消息。
要配置payload
参数,您可以在Dubbo的提供者端和消费者端的配置文件中进行相应的设置。具体的配置方式取决于您使用的Dubbo版本和配置方式。
以下是一种可能的配置方式,供您参考:
在Dubbo提供者端的配置文件(如dubbo-provider.xml
)中,可以添加以下配置:
<dubbo:protocol name="dubbo" payload="10485760" />
上述配置将payload
设置为10MB(10485760字节)。您可以根据需要调整该值。
在Dubbo消费者端的配置文件(如dubbo-consumer.xml
)中,可以添加以下配置:
<dubbo:consumer payload="10485760" />
同样,上述配置将payload
设置为10MB(10485760字节)。
请注意,具体的配置方式可能因Dubbo版本和使用的配置方式而有所不同。建议您查阅Dubbo的官方文档或参考相关的配置指南,以获取更准确的配置信息。
关于您提到的错误信息,RpcException: Failed to invoke remote method: acceptEvent
,这可能是由于Dubbo消息的负载大小超过了提供者端的配置限制所导致的。您可以尝试增加payload
的配置值,以适应更大的负载大小。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。