开发者社区 > 云原生 > 正文

请问dubbo-go 作为客户端调用java的dubbo接口,发生这个错误怎么解决?

"请问dubbo-go 作为客户端调用java的dubbo接口,发生这个错误:dubbo-getty@v1.4.9-0.20221022181821-4dc6252ce98c/session.go:606 {client:TCP_CLIENT:4:192.168.59.170:65188<->192.168.44.148:30201}, [session.handleTCPPackage] = len{593707}, error:pkgLen 593707 > session max message len 102400
会是什么原因?貌似是报文太长了,在哪里可以设置长度限制?229874d733ac7bc84e7604c6a7eb9622.png
加了这个,似乎好了。就不知道这个数值的单位是什么?B还是KB?db3026b5bfe5c475526b112367c740c9.png
还有个问题,Metrics已经关闭了,如图所示,还是报监控的警告:2023-07-13T11:29:24.043+0800 WARN prometheus/reporter.go:425 new prometheus reporter with error = listen tcp :9090: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted."

展开
收起
十一0204 2023-07-19 21:48:31 162 0
2 条回答
写回答
取消 提交回答
  • 该错误表明 Dubbo-Go 客户端调用 Java 的 Dubbo 接口时,收到的响应报文长度超过了默认的最大限制。默认情况下,Dubbo-Go 的消息长度限制为 102400 字节。

    要解决这个问题,您可以在 Dubbo-Go 客户端代码中进行以下设置:

    1. 导入 github.com/apache/dubbo-go/common/constant 包,以获取常量定义。
    2. 在发起 Dubbo 调用之前,通过 constant.SetMaxMessageSize(size) 方法来设置最大消息长度。例如,constant.SetMaxMessageSize(1024 * 1024) 将将最大消息长度设置为 1MB。

    这样,您就可以增加最大消息长度限制,确保能够处理较长的响应报文。

    请注意,在进行此类更改之前,请确保理解和评估对系统性能和资源消耗的影响。根据实际需求,选择合适的最大消息长度,并确保服务器端也能处理相应长度的报文。

    2023-07-28 11:29:54
    赞同 展开评论 打赏
  • 意中人就是我呀!

    这个需要等社区最近发版,把 fix PR 合并到 release 分支后就修复了。此回答整理至钉群“dubbogo社区2”。

    2023-07-20 08:04:52
    赞同 展开评论 打赏

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载