dubbo顺序调用服务,其中一个出错。怎么保证整个方法正常执行。
dubbo 在顺序调用 远程服务的时候 必须要循环调用5个服务。 其中一个服务挂掉了。那么就会抛出异常 ,导致整个方法不可用。 但是想要 忽略其中挂掉的服务,不要求每一个都成功但是大体上要成功,即不因为其中一个服务的挂掉而导致整个方法出错。这种怎么解决?
伪代码
public void main(){
Service1 service1 = context.getBean("Service1");
//假如现在 service2 这个服务机器 挂掉了。
//这里抛出异常。 不想用捕获异常的方式来解决这个问题。
//因为这个服务个数可能要很多个。service 7 8 9 10...
Service2 service2 = context.getBean("Service2");
Service3 service3 = context.getBean("Service3");
Service4 service4 = context.getBean("Service4");
Service5 service5 = context.getBean("Service5");
String rtnmsg1 = service1.doservice();
String rtnmsg2 = service2.doservice();
String rtnmsg3 = service3.doservice();
String rtnmsg4 = service4.doservice();
String rtnmsg5 = service5.doservice();
String rtnmsg = rtnmsg1+rtnmsg2+rtnmsg3+rtnmsg4+rtnmsg5;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(13)
您好,这个不是spring cloud中的熔断么。 可以作为单独的包引用到dubbo中么?
回复
@StopTWorld : 客气了
回复
@工匠驿站 : 好的。谢谢您,我去研究一下。
回复
@StopTWorld : http://www.roncoo.com/article/detail/126834 可以参考这个
用 Netflix/Hystrix
fallback 别告诉我没有
蟹蟹回复。 这个没接触过,我再去查查,您这边有相关的示例么?
蟹蟹回复。第一种, 按照官方文档 mock配置没成功,mock的意思是不是 就是当5个服务中的某的挂掉了 ,就调用本地对应的实现mock类。 这块您有成功的配置么。 第二种,我这边测试是我循环调用5个远程方法,其中一个出错 就抛异常了呀。。。
回复
@StopTWorld : mock本地方法调用需要设置mock="true",并且需要在同包目录下创建实现同一接口,以接口名+Mock为结尾的默认实现类;或者是设置mock="return null"代表异常时返回空对象。请参考文档:http://dubbo.apache.org/zh-cn/docs/user/demos/local-mock.html
调用链五个?还是五个提供者轮询?
第一种,调用链五个,你可以做mock
第二种,五个提供者轮询,挂了不受影响啊,zk会通知dubbo删除宕机的信息。
蟹蟹回复。 这个配置配置了 可以保证启动没有问题,不检查服务端是否正常,, 但是调用的时候 就出问题了。 就是我上面描述的问题。
<dubbo:reference id="XXX"
interface="XXX" retries="XXX"
timeout="XXX" check="false" />
设置此服务启动不检查:check="false"
蟹蟹回复。 单独 try catch是可以,但是我这边服务很多。比如要调用30个接口。 那样的话 感觉有点。。。