在使用dubbo过程中遇到哪些问题?如何解决?
展开全部
1、同时配置了XML和properties文件,则properties中的配置无效
只有XML没有配置时,properties才会生效
2、dubbo默认会在启动时检查依赖是否可用,不可用就抛出异常,阻止spring初始化完成,check属性默认为true
测试环境下有些服务不关心或出现了循环依赖,将check设置为false
3、为了方便开发测试,线下有一个所有服务可用的注册中心,这时,如果有一个正在开发中的服务提供者注册,可能会影响消费者不能正常运行
让服务提供者开发者,只订阅服务,而不注册正在开发的服务,通过直连测试正在开发的服务。设置dubbo:registry标签register属性为false
4、spring 2.x初始化死锁的问题
事件:在spring解析到dubbo:service时,就已经向外暴露了服务,而spring还在接着初始化其他bean,如果这时有请求进来,并且服务的实现类里有调用applicationContext.getBean()的方法,getBean线程和spring初始化线程的锁的顺序不一样,导致了线程死锁,不能提供服务,启动不了;
解决:不要在服务的实现类中使用applicationContext.getBean()如果不想依赖配置顺序,可以将dubbo:provider的deplay属性设置为-1,使dubbo在容器初始化完成后再暴露服务
5、服务注册不上
6、出现RpcException:No provider available for remote service异常
这个异常表示没有可用的服务提供者;
7、出现“消息发送失败”异常
通常是接口方法的传入传出参数未实现Serializable接口
只有XML没有配置时,properties才会生效
2、dubbo默认会在启动时检查依赖是否可用,不可用就抛出异常,阻止spring初始化完成,check属性默认为true
测试环境下有些服务不关心或出现了循环依赖,将check设置为false
3、为了方便开发测试,线下有一个所有服务可用的注册中心,这时,如果有一个正在开发中的服务提供者注册,可能会影响消费者不能正常运行
让服务提供者开发者,只订阅服务,而不注册正在开发的服务,通过直连测试正在开发的服务。设置dubbo:registry标签register属性为false
4、spring 2.x初始化死锁的问题
事件:在spring解析到dubbo:service时,就已经向外暴露了服务,而spring还在接着初始化其他bean,如果这时有请求进来,并且服务的实现类里有调用applicationContext.getBean()的方法,getBean线程和spring初始化线程的锁的顺序不一样,导致了线程死锁,不能提供服务,启动不了;
解决:不要在服务的实现类中使用applicationContext.getBean()如果不想依赖配置顺序,可以将dubbo:provider的deplay属性设置为-1,使dubbo在容器初始化完成后再暴露服务
5、服务注册不上
6、出现RpcException:No provider available for remote service异常
这个异常表示没有可用的服务提供者;
7、出现“消息发送失败”异常
通常是接口方法的传入传出参数未实现Serializable接口
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询