Я хочу использовать запасной вариант по умолчанию, чтобы повторить попытку другого сервера. Но Feign & Hystrix поддерживают резервные и резервные фабрики для реализации резервной логики каждого метода. В резервной логике я хочу просто заменить хост (или порт) URL-адреса запроса на другой сервер. Могу ли я настроить резервную стратегию по умолчанию для достижения вышеуказанной цели?
Это мой клиент.
@FeignClient(value = "stores", url = "localhost:9000" ,fallbackFactory = FallbackFactoryImp.class)
public interface StoreClient {
@RequestMapping(method = RequestMethod.GET, value = "/stores")
List<Long> getStores();
@RequestMapping(method = RequestMethod.GET, value = "/storesOthers")
List<Long> getStoresOther();
}
И это моя резервная фабрика.
@Component
public class FallbackFactoryImp implements FallbackFactory<StoreClient> {
@Override
public StoreClient create(Throwable throwable) {
return new StoreClient() {
@Override
public List<Long> getStores() {
return (List<Long>) new HystrixCommand<Object>(null, null) {
@Override
protected Object run() throws Exception {
// retry to other server ex) GET localhost:8080/stores
return null;
}
@Override
protected Object getFallback() {
// return static data;
return null;
}
}.execute();
}
@Override
public List<Long> getStoresOther() {
// duplicate logic
return (List<Long>) new HystrixCommand<Object>(null, null) {
@Override
protected Object run() throws Exception {
// retry to other server ex) GET localhost:8080/storeOthers
return null;
}
@Override
protected Object getFallback() {
// return static data;
return null;
}
}.execute();
}
};
}
}