@Override public String apply(DefaultProperties input) { return input.defaultFallback(); } }).or(StringUtils.EMPTY);
@HystrixCommand(groupKey = "FallbackGroupKey", threadPoolKey = "FallbackThreadPoolKey", commandProperties = { @HystrixProperty(name = EXECUTION_ISOLATION_THREAD_TIMEOUT_IN_MILLISECONDS, value = "654") }, threadPoolProperties = { @HystrixProperty(name = "maxQueueSize", value = "321") }) private Object fallbackOverridesDefaultProperties() { return null; } }
@HystrixCollapser(batchMethod = "getUserByIdsWithFallback", collapserProperties = {@HystrixProperty(name = "timerDelayInMilliseconds", value = "200")}) public Future<User> getUserByIdWithFallback(String id) { return null; }
@HystrixCommand(fallbackMethod = "firstFallbackCommand") public Future<User> getUserAsyncFallbackCommand(final String id, final String name) { return new AsyncResult<User>() { @Override public User invoke() { validate(id, name); return new User(id, name + id); // it should be network call } }; }
@HystrixCommand(threadPoolProperties = { @HystrixProperty(name = "maxQueueSize", value = "321") }) public Object commandOverridesDefaultThreadPoolProperties() { return null; } }
@HystrixCommand(fallbackMethod = "secondAsyncFallbackCommand") private Future<User> firstAsyncFallbackCommand(final String id, final String name) { return new AsyncResult<User>() { @Override public User invoke() { throw new RuntimeException("firstAsyncFallbackCommand failed"); } }; }
@HystrixCollapser(batchMethod = "getUserByIds", collapserProperties = {@HystrixProperty(name = "timerDelayInMilliseconds", value = "200")}) public Future<User> getUserById(String id) { return null; }
@HystrixCommand(fallbackMethod = "asyncFallbackCommand", commandProperties = { @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "100000") }) public Future<User> asyncCommandWithAsyncFallbackCommand(final String id, final String name) { return new AsyncResult<User>() { @Override public User invoke() { validate(id, name); return new User(id, name + id); // it should be network call } }; }
@HystrixCommand(fallbackMethod = "defaultCommandFallback") Long defaultCommandFallback(){ return 0L; } }
@HystrixCollapser(batchMethod = "getUserByIdsThrowsException", collapserProperties = {@HystrixProperty(name = "timerDelayInMilliseconds", value = "200")}) public Future<User> getUserByIdWithFallbackWithThrowableParam(String id) { return null; }
@HystrixCommand(commandProperties = { @HystrixProperty(name = EXECUTION_ISOLATION_THREAD_TIMEOUT_IN_MILLISECONDS, value = "654") }) public Object commandOverridesDefaultCommandProperties() { return null; }
@HystrixCommand(fallbackMethod = "thirdAsyncFallbackCommand") private Future<User> secondAsyncFallbackCommand(final String id, final String name, final Throwable e) { return new AsyncResult<User>() { @Override public User invoke() { if ("firstAsyncFallbackCommand failed".equals(e.getMessage())) { throw new RuntimeException("secondAsyncFallbackCommand failed"); } return new User(id, name + id); } }; }
@HystrixCollapser(batchMethod = "getUserByIds", collapserProperties = {@HystrixProperty(name = "timerDelayInMilliseconds", value = "200")}) public Observable<User> getUserByIdReactive(String id) { return null; }
@HystrixCommand(commandProperties = {@HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "1")}) String commandWithFallbackThatFailsByTimeOut_f_0() { return ""; } }
@HystrixCommand public <T> Future<T> echoAsync(final T value) { return new AsyncResult<T>() { @Override public T invoke() { return value; } }; }
@HystrixCollapser( batchMethod = "getUsers", collapserKey = "GetUserCollapser", collapserProperties = { @HystrixProperty(name = TIMER_DELAY_IN_MILLISECONDS, value = "200"), @HystrixProperty(name = MAX_REQUESTS_IN_BATCH, value = "1"), }) public User getUser(String id) { return null; }
@HystrixCommand(commandProperties = {@HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "1")}) String timedOutWithoutFallback() { return ""; }
@HystrixCommand(fallbackMethod = "firstAsyncFallbackCommand") public Future<User> getUserAsyncFallbackAsyncCommand(final String id, final String name) { return new AsyncResult<User>() { @Override public User invoke() { throw new RuntimeException("getUserAsyncFallbackAsyncCommand failed"); } }; }
@HystrixCommand(groupKey = "CommandGroupKey", threadPoolKey = "CommandThreadPoolKey", commandProperties = { @HystrixProperty(name = EXECUTION_ISOLATION_THREAD_TIMEOUT_IN_MILLISECONDS, value = "654") }, threadPoolProperties = { @HystrixProperty(name = "maxQueueSize", value = "321") }, fallbackMethod = "fallbackInheritsDefaultProperties") public Object commandOverridesDefaultPropertiesWithFallbackInheritsDefaultProperties() { throw new RuntimeException(); }
@HystrixCommand( fallbackMethod = "getUserByIdsFallbackWithThrowableParam1", commandProperties = { @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "10000")// for debug }) public List<User> getUserByIdsThrowsException(List<String> ids) { throw new RuntimeException("getUserByIdsFails failed"); }