有三个服务 A B C
A和B之间是同步调用 B和C是异步调用 现在需要A同步请求B时 B根据A的请求去异步请求C A等待 B要等到C异步返回数据之后 在将C返回的数据同步返回给A 。
有没有好的解决方案 。
感谢各位大神给我解答一下。
a里面写个回调方法传给b,b再传给c,当c返回数据的时候将数据传给a的回调方法,a在等待当过程中检查回调方法有没有被调用就可以了,检查有没有调用这个只需要再回调方法中加个状态值就可以了
String res = c的异步响应值;
while(res==null){
//200ms判断一次
Thread.currentThread().sleep(200);
}
//响应后处理
System.out.println("响应了");
观察者模式
http://blog.csdn.net/wanyouzhi/article/details/78054054
A直接跟C说好了打电话
String res = c的异步响应值;
while(res==null){
//200ms判断一次
Thread.currentThread().sleep(200);
}
//响应后处理
System.out.println("响应了");
首先从流程设计上来说就是有问题的,A一直在等待,说明是很重要的结果,但是B到C是异步,再加上最低2次网络通信,中间有很多不确定性。
这种情况可以考虑两种方案:
1.牺牲用户体验,最终一致性,借助消息中间件,A/C之间增加异步回调机制
2.强一致性,两两之间采用同步,A/B/C之间预备回滚方案