背景
dubbo3是今年新推出的革命性版本,之前使用过dubbo2,对dubbo3比较好奇,今天就初次尝鲜。本次项目架构:
- springboot 基础脚手架
- dubbo3 核心服务框架
- nacos 注册中心
- protobuf 传输协议
问题
按照官方文档教程编写,customer端运行时报以下错误信息:
Caused by: java.lang.IllegalArgumentException: This serialization only supports google protobuf objects, current object class is: java.lang.String
at org.apache.dubbo.common.serialize.protobuf.support.GenericProtobufObjectOutput.writeObject(GenericProtobufObjectOutput.java:115)
at org.apache.dubbo.rpc.protocol.dubbo.DubboCodec.encodeRequestData(DubboCodec.java:207)
at org.apache.dubbo.remoting.exchange.codec.ExchangeCodec.encodeRequest(ExchangeCodec.java:259)
at org.apache.dubbo.remoting.exchange.codec.ExchangeCodec.encode(ExchangeCodec.java:71)
at org.apache.dubbo.rpc.protocol.dubbo.DubboCountCodec.encode(DubboCountCodec.java:47)
at org.apache.dubbo.remoting.transport.netty4.NettyCodecAdapter$InternalEncoder.encode(NettyCodecAdapter.java:69)
at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:107)
... 21 more
解决
一开始以为是dubbo配置的问题,尝试多次无果后,还是在官网文档中发现的解决方案,原来是缺少依赖了。按文档说明,添加以下依赖即可:
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-metadata-definition-protobuf</artifactId>
<version>${dubbo.version}</version>
</dependency>
官网文档链接:
https://dubbo.apache.org/zh/docs/v2.7/user/examples/pb-generic-reference/
完整项目源代码:
https://github.com/lusyoe/dubbo3-example
版权声明:本文为lusyoe原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。