apache / dubbo-spring-boot-project

Spring Boot Project for Apache Dubbo
https://dubbo.apache.org
Apache License 2.0
5.41k stars 1.88k forks source link

dubbo 2.7 与 dubbox 2.8.4 如何混合使用? #454

Closed HWliao closed 5 years ago

HWliao commented 5 years ago

公司历史项目几乎使用的都是dubbox2.8.4, 现在新的项目准备使用dubbo 2.7 请问dubbo2.7 能否直接兼容dubbox2.8.4 本人有尝试过通过dubbo-spring-boot-starter集成dubbo2.7 直接消费dubbox的提供的服务, 结果在调用时报错了, 跟踪了一下代码, 发现response 返回状态码40 BadRequest

使用的是zookeeper注册中心 生产者和消费者使用的协议都是protocol dubbo

Caused by: java.lang.IllegalStateException: No such extension org.apache.dubbo.common.serialize.Serialization by name dubbo at org.apache.dubbo.common.extension.ExtensionLoader.findException(ExtensionLoader.java:514) at org.apache.dubbo.common.extension.ExtensionLoader.createExtension(ExtensionLoader.java:521) at org.apache.dubbo.common.extension.ExtensionLoader.getExtension(ExtensionLoader.java:344) at org.apache.dubbo.remoting.transport.CodecSupport.getSerialization(CodecSupport.java:65) at org.apache.dubbo.remoting.transport.AbstractCodec.getSerialization(AbstractCodec.java:51) at org.apache.dubbo.remoting.exchange.codec.ExchangeCodec.encodeRequest(ExchangeCodec.java:214) at org.apache.dubbo.remoting.exchange.codec.ExchangeCodec.encode(ExchangeCodec.java:72) at org.apache.dubbo.rpc.protocol.dubbo.DubboCountCodec.encode(DubboCountCodec.java:38) at org.apache.dubbo.remoting.transport.netty4.NettyCodecAdapter$InternalEncoder.encode(NettyCodecAdapter.java:70) at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:107) ... 19 more

mercyblitz commented 5 years ago

You can try dubbo 2.6.5

HWliao commented 5 years ago

使用dubbo 2.6.5 dubbo starter 0.2.1.release 调用dubbox2.8.4提供的服务依旧(消费者)报错

Caused by: com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method qryAgencyCount in the service com.jjshome.kp.api.service.institution.IInstitutionService. Tried 1 times of the providers [172.16.3.107:20889] (1/1) from the registry 172.16.4.114:2181 on the consumer 172.16.6.44 using the dubbo version 2.6.5. Last error is: Failed to invoke remote method: qryAgencyCount, provider: dubbo://172.16.3.107:20889/com.jjshome.kp.api.service.institution.IInstitutionService?accesslog=dubbo.accesslog&anyhost=true&application=demo-dubbo&check=false&dubbo=2.8.4&generic=false&interface=com.jjshome.kp.api.service.institution.IInstitutionService&methods=qryAgencyInfoPage,qryInstitutionByOldShopId,updateJgInfobyOldShopId,qryInstitutionByName,qryAgencyCount,qryInstitutionByDeptNumber&organization=jjs&owner=kp&pid=3288&qos.enable=false&register.ip=172.16.6.44&remote.timestamp=1550223637425&retries=0&revision=1.7.1&serialization=dubbo&side=consumer&timeout=2000&timestamp=1550802272887, cause: Failed to send message Request [id=0, version=2.0.2, twoway=true, event=false, broken=false, data=RpcInvocation [methodName=qryAgencyCount, parameterTypes=[], arguments=[], attachments={path=com.jjshome.kp.api.service.institution.IInstitutionService, interface=com.jjshome.kp.api.service.institution.IInstitutionService, version=0.0.0, timeout=2000}]] to /172.16.3.107:20889, cause: No such extension com.alibaba.dubbo.common.serialize.Serialization by name dubbo at com.alibaba.dubbo.rpc.cluster.support.FailoverClusterInvoker.doInvoke(FailoverClusterInvoker.java:109) ~[dubbo-2.6.5.jar:2.6.5] at com.alibaba.dubbo.rpc.cluster.support.AbstractClusterInvoker.invoke(AbstractClusterInvoker.java:244) ~[dubbo-2.6.5.jar:2.6.5] at com.alibaba.dubbo.rpc.cluster.support.wrapper.MockClusterInvoker.invoke(MockClusterInvoker.java:75) ~[dubbo-2.6.5.jar:2.6.5] at com.alibaba.dubbo.rpc.proxy.InvokerInvocationHandler.invoke(InvokerInvocationHandler.java:52) ~[dubbo-2.6.5.jar:2.6.5] at com.alibaba.dubbo.common.bytecode.proxy0.qryAgencyCount(proxy0.java) ~[dubbo-2.6.5.jar:2.6.5] ... 31 common frames omitted Caused by: com.alibaba.dubbo.remoting.RemotingException: Failed to send message Request [id=0, version=2.0.2, twoway=true, event=false, broken=false, data=RpcInvocation [methodName=qryAgencyCount, parameterTypes=[], arguments=[], attachments={path=com.jjshome.kp.api.service.institution.IInstitutionService, interface=com.jjshome.kp.api.service.institution.IInstitutionService, version=0.0.0, timeout=2000}]] to /172.16.3.107:20889, cause: No such extension com.alibaba.dubbo.common.serialize.Serialization by name dubbo at com.alibaba.dubbo.remoting.transport.netty.NettyChannel.send(NettyChannel.java:110) ~[dubbo-2.6.5.jar:2.6.5] at com.alibaba.dubbo.remoting.transport.AbstractClient.send(AbstractClient.java:265) ~[dubbo-2.6.5.jar:2.6.5] at com.alibaba.dubbo.remoting.transport.AbstractPeer.send(AbstractPeer.java:53) ~[dubbo-2.6.5.jar:2.6.5] at com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeChannel.request(HeaderExchangeChannel.java:116) ~[dubbo-2.6.5.jar:2.6.5] at com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeClient.request(HeaderExchangeClient.java:90) ~[dubbo-2.6.5.jar:2.6.5] at com.alibaba.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient.request(ReferenceCountExchangeClient.java:83) ~[dubbo-2.6.5.jar:2.6.5] at com.alibaba.dubbo.rpc.protocol.dubbo.DubboInvoker.doInvoke(DubboInvoker.java:95) ~[dubbo-2.6.5.jar:2.6.5] at com.alibaba.dubbo.rpc.protocol.AbstractInvoker.invoke(AbstractInvoker.java:155) ~[dubbo-2.6.5.jar:2.6.5] at com.alibaba.dubbo.rpc.listener.ListenerInvokerWrapper.invoke(ListenerInvokerWrapper.java:77) ~[dubbo-2.6.5.jar:2.6.5] at com.alibaba.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:75) ~[dubbo-2.6.5.jar:2.6.5] at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:72) ~[dubbo-2.6.5.jar:2.6.5] at com.alibaba.dubbo.rpc.protocol.dubbo.filter.FutureFilter.invoke(FutureFilter.java:54) ~[dubbo-2.6.5.jar:2.6.5] at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:72) ~[dubbo-2.6.5.jar:2.6.5] at com.alibaba.dubbo.rpc.filter.ConsumerContextFilter.invoke(ConsumerContextFilter.java:49) ~[dubbo-2.6.5.jar:2.6.5] at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:72) ~[dubbo-2.6.5.jar:2.6.5] at com.alibaba.dubbo.rpc.protocol.InvokerWrapper.invoke(InvokerWrapper.java:56) ~[dubbo-2.6.5.jar:2.6.5] at com.alibaba.dubbo.rpc.cluster.support.FailoverClusterInvoker.doInvoke(FailoverClusterInvoker.java:78) ~[dubbo-2.6.5.jar:2.6.5] ... 35 common frames omitted Caused by: java.lang.IllegalStateException: No such extension com.alibaba.dubbo.common.serialize.Serialization by name dubbo at com.alibaba.dubbo.common.extension.ExtensionLoader.findException(ExtensionLoader.java:482) ~[dubbo-2.6.5.jar:2.6.5] at com.alibaba.dubbo.common.extension.ExtensionLoader.createExtension(ExtensionLoader.java:489) ~[dubbo-2.6.5.jar:2.6.5] at com.alibaba.dubbo.common.extension.ExtensionLoader.getExtension(ExtensionLoader.java:309) ~[dubbo-2.6.5.jar:2.6.5] at com.alibaba.dubbo.remoting.transport.CodecSupport.getSerialization(CodecSupport.java:65) ~[dubbo-2.6.5.jar:2.6.5] at com.alibaba.dubbo.remoting.transport.AbstractCodec.getSerialization(AbstractCodec.java:51) ~[dubbo-2.6.5.jar:2.6.5] at com.alibaba.dubbo.remoting.exchange.codec.ExchangeCodec.encodeRequest(ExchangeCodec.java:212) ~[dubbo-2.6.5.jar:2.6.5] at com.alibaba.dubbo.remoting.exchange.codec.ExchangeCodec.encode(ExchangeCodec.java:72) ~[dubbo-2.6.5.jar:2.6.5] at com.alibaba.dubbo.rpc.protocol.dubbo.DubboCountCodec.encode(DubboCountCodec.java:38) ~[dubbo-2.6.5.jar:2.6.5] at com.alibaba.dubbo.remoting.transport.netty.NettyCodecAdapter$InternalEncoder.encode(NettyCodecAdapter.java:80) ~[dubbo-2.6.5.jar:2.6.5] at org.jboss.netty.handler.codec.oneone.OneToOneEncoder.doEncode(OneToOneEncoder.java:66) ~[netty-3.7.0.Final.jar:na] at org.jboss.netty.handler.codec.oneone.OneToOneEncoder.handleDownstream(OneToOneEncoder.java:59) ~[netty-3.7.0.Final.jar:na] at com.alibaba.dubbo.remoting.transport.netty.NettyHandler.writeRequested(NettyHandler.java:98) ~[dubbo-2.6.5.jar:2.6.5] at org.jboss.netty.channel.Channels.write(Channels.java:704) ~[netty-3.7.0.Final.jar:na] at org.jboss.netty.channel.Channels.write(Channels.java:671) ~[netty-3.7.0.Final.jar:na] at org.jboss.netty.channel.AbstractChannel.write(AbstractChannel.java:248) ~[netty-3.7.0.Final.jar:na] at com.alibaba.dubbo.remoting.transport.netty.NettyChannel.send(NettyChannel.java:100) ~[dubbo-2.6.5.jar:2.6.5] ... 51 common frames omitted

HWliao commented 5 years ago

dubbox 生产者 序列化 改为hessian2, 可以通过dubbo2.7 调用