Интеграция пружинной загрузки Hystrix

У меня есть следующий метод

@HystrixCommand(commandKey="operator",fallbackMethod="getFakeResponse",commandProperties = {
        @HystrixProperty(name = "hystrix.command.operator.execution.isolation.thread.timeoutInMilliseconds", value = "30000")
})
public String getResponse(){

    try {
        Thread.sleep(6000000l);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
    //  e.printStackTrace();
    }


    return "the real thing";
}

всякий раз, когда я пытаюсь запустить свой код модульного теста, чтобы проверить его, я получаю следующее исключение

com.netflix.hystrix.contrib.javanica.exception.HystrixPropertyException: не удалось установить свойства команды. groupKey: 'HystrixComponentPOC', commandKey: 'operator', threadPoolKey: '' на com.netflix.hystrix.contrib.javanica.command.GenericSetterBuilder.build(GenericSetterBuilder.java:88) на com.netflix.hystjancica.command.AbstractHystrixCommand.(AbstractHystrixCommand.java:52) на com.netflix.hystrix.contrib.javanica.command.GenericCommand.(GenericCommand.java:35) на com.netflix.hystrix.contrib.javanica.command.FystoryC HystrixCommandFactory.java:44) в com.netflix.hystrix.contrib.javanica.aop.aspectj.HystrixCommandAspect.methodsAnnotatedWithHystrixCommand(HystrixCommandAspect.java:85) в sun.reflex.Nhome invoke (Неизвестный источник) по адресу sun.reflect.DelegatingMethodAccessorImpl.invoke(Неизвестный источник) по адресу java.lang.reflect.Method.invoke(Неизвестный источник) по адресу org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceJa.jj () в org.springfram ework.aop.aspectj. Java:168) в org.springframework.aop.interceptor..CglibAopProxy. в sun.reflect.NativeMethodAccessorImpl.invoke0(собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke(неизвестный источник) в sun.reflect.DelegatingMethodAccessorImpl.invoke(неизвестный источник) в java.lan g.reflect. 12) в org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) в org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) в org.junit.statements..evaluate(RunAfterTestMethodCallbacks.java:86) в org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84) в org.junit.runners.ParentRunner.runLeaf(ParentRj)32: родительский родитель org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:252) в org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94) в org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) (org.jr. ParentRunner.java:71) в org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) в org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) в org.junit.runner.Parent (.java:70) по адресу org.junit.runners.ParentRunner.run(ParentRunner.java:363) по адресу org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:19lse или org. org).internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) в org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) в org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) в org.eclipse.jdt.internal.junit.runnerRun RemoteTestRunner.java:675) в org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) в org.eclipse.jdt.internal.junit.runner.RemoteTestRavaRunner (192) Причины: java.lang.IllegalArgumentException: неизвестное свойство команды: hystrix.command.operator.execution.isolation.thread.timeoutInMilliseconds at com.netflix.hystrix.contrib.javanica.conf.HystrixPropertiesManager.initialS) в com.netflix.hystrix.contrib.javanica.conf.HystrixPropertiesManager.initializeCommandProperties(HystrixPropertiesManager.java:99) в com.netflix.hystrix.contrib.javanica.command.GenericSetterBuilder.SjterBuilder.86) (Еще 47

Тем не менее, я могу запустить его успешно с исключительным поведением, когда я удаляю аннотацию и добавляю

hystrix.command.operator.execution.isolation.thread.timeoutInMilliseconds=30000

в мой файл свойств

Кстати, единственная конфигурация, которую я имею, - это @EnableHystrix в моем основном классе, и я использую весеннюю загрузку 1.4.0.RELEASE

любая помощь, пожалуйста?

1 ответ

Решение

Вы уверены, что это правильное имя свойства команды? Не должно ли это быть

@HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "30000")

вместо?

https://github.com/Netflix/Hystrix/wiki/Configuration

также некоторые фрагменты одного из их тестов, которые могут оказаться полезными https://github.com/Netflix/Hystrix/blob/d838f4d1ba65ce55755ab1c73f74c980f04572bf/hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/configuration/command/BasicCommandPropertiesTest.java#L155

Другие вопросы по тегам