解决dubbo3使用protobuf序列化问题

本文介绍了作者在尝试使用dubbo3新版本时遇到的protobuf序列化问题。项目采用springboot、dubbo3、nacos和protobuf作为基础架构。在遵循官方文档进行配置后,客户端运行时出现错误。通过深入研究,作者发现解决方案在于添加缺失的依赖,具体解决办法可在官方文档和提供的GitHub项目源码中找到。

背景

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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值