世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程。
hystrix的服务保护机制是通过Rxjava的Observable实现的,平时可能用不上,其实简化一下也就是出错以后的处理方案,至于hystrix的内部处理原理:cache -> circuit -> semaphore/thread -> run,metrics度量,也就是这么多,如果对其核心的方法使用正统的Java方式简化,如下即可:
interface Command {
String run ();
String fallBack ();
}
class CustomCommand implements Command {
@Override
public String run() {
return "ok";
}
@Override
public String fallBack() {
return "fall";
}
}
public void test8 () {
ExecutorService service = Executors.newSingleThreadExecutor();
CustomCommand customCommand = new CustomCommand();
Future<String> future = service.submit(new Callable<String>() {
@Override
public String call() throws Exception {
//Thread.sleep(5000);
return customCommand.run();
}
});
String re = "";
try {
re = future.get(500, TimeUnit.MILLISECONDS);
} catch (Exception e) {
re = customCommand.fallBack();
}
System.out.println(re);
}