Hystrix is a latency and fault tolerance library designed to isolate points of access to remote systems, services and 3rd party libraries, stop cascading failure and enable resilience in complex distributed systems where failure is inevitable.
Hi All,
I'm trying to use use spring cloud hystrix with spring cachable annotation, it is not working.
following is code sample
```
@Cacheable(value = "test", sync = true)
@HystrixCommand(fallbackMethod="recoverGetValue")
public String getValue(int id) {
return id + "";
}
public String recoverGetValue(int id) {
System.out.println("getting data from different resource");
return id + "";
}
```
Cacheable annotation throws operationTimeoutException, but fallback method is not being called. How to solve this issue?
Hi, I am working on a project using Hystrix and gRPC. I have a HystrixObservableCommand class - MemberCommand and I am subscribing using Schedulers.io()
memberCommand.toObservable().subscribeOn(Schedulers.io());
In the construct method, I log the gRPC context but it returns null -
protected Observable<Greeter.GreeterReply> construct() {
logger.info("0 -- In MemberCommand, traceId from gRPC context = {}", ContextKeys.TRACE_ID_CTX_KEY.get());
Any ideas, how I can propagate gRPC context through RxIoScheduler threads?
For the above I get,
0 -- In MemberCommand, traceId from gRPC context = null
java.lang.IllegalStateException: ApplicationEventMulticaster not initialized - call 'refresh' before multicasting events via the context: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@6882d8d8: startup date [Tue Jul 17 16:03:25 CST 2018]; parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@25139613
at org.springframework.context.support.AbstractApplicationContext.getApplicationEventMulticaster(AbstractApplicationContext.java:414)
at org.springframework.context.support.ApplicationListenerDetector.postProcessBeforeDestruction(ApplicationListenerDetector.java:97)
at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:253)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:578)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:554)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:961)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:523)
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.destroySingletons(FactoryBeanRegistrySupport.java:230)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:968)
at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1030)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:556)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:303)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107)
at com.tienon.TurbineApplication.main(TurbineApplication.java:16)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)
2018-07-17 16:03:25.617 ERROR [spring-cloud-hyxtrix-turbine,,,] 9844 --- [ restartedMain] o.s.boot.SpringApplication : Application startup failed
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import candidates for configuration class [com.tienon.TurbineApplication]; nested exception is java.lang.IllegalStateException: Failed to introspect annotated methods on class org.springframework.cloud.netflix.turbine.stream.TurbineStreamConfiguration
at org.springframework.context.annotation.ConfigurationClassParser.processImports(ConfigurationClassParser.java:616)
at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:299)
at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:245)
at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:198)
at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:167)
at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:308)
at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationC
To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on class path.
and wondered if it would be sufficient to put hystrix properties in config.properties
, that seemed to have no effect (config.properties is picked up but the timeout on the thread is not applied). I also tried ConfigurationManager.loadPropertiesFromResources("config.properties")
which also seems to have no effect.
I am trying to override a hystrix command timeout for a feign client from command line. I can't figure out syntax for the # and parens. I'm using spring-boot-2 and spring-cloud-netflix.
hystrix:
command:
FeignClientClass#methodName(ParamsClass):
execution:
isolation:
thread:
timeoutInMilliseconds: 10000
set HYSTRIX_COMMAND_FEIGNCLIENTCLASS#METHODNAME(PARAMSCLASS)_EXECUTION_ISOLATION_THREAD_TIMEOUTINMILLISECONDS=10000
Has anyone got experience with this and some suggestions?