首页 文章

spring boot hystrix集成

提问于
浏览
0

我有以下方法

@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:''at com.netflix.hystrix.contrib.javanica.command.GenericSetterBuilder.build(GenericSetterBuilder.java:88)at com.netflix.hystrix.contrib.javanica . com.netflix.hystrix.contrib.javanica.command.GenericCommand . (GenericCommand.java:35)的com.netflix.hystrix.contrib.javanica.command.HystrixCommandFactory.create命令.AbstractHystrixCommand . (AbstractHystrixCommand.java:52) HystrixCommandFactory.java:44)位于sun.reflect.NativeMethodAccessorImpl的sun.reflect.NativeMethodAccessorImpl.invoke0(本地方法)的com.netflix.hystrix.contrib.javanica.aop.aspectj.HystrixCommandAspect.methodsAnnotatedWithHystrixCommand(HystrixCommandAspect.java:85) . 调用(未知来源)在sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源)在java.lang.reflect.Method.invoke(未知来源)在org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:629)在org.springfram在org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation)的org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70)中的ework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:618) . 的java:168)在org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)在org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)在org.springframework.aop.framework .cglibAopProxy $ DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:655)位于com.masary.topup.HystrixComponentPOC $$ EnhancerBySpringCGLIB $$ 95f9b3dd.getResponse()at com.masary.topup.refactor.LedgerUpdateTestCases.test(LedgerUpdateTestCases.java:50) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)at java.lan org.junit.internal.runners.model.ReflectiveCallable.run上的org.junit.runners.model.FrameworkMethod $ 1.runReflectiveCall(FrameworkMethod.java:50)中的g.reflect.Method.invoke(未知来源)(ReflectiveCallable.java: 12)org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)org.junit.internal.runners .statements.RunBefores.evaluate(RunBefores.java:26)org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks .evaluate(RunAfterTestMethodCallbacks.java:86)org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)at at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:252)at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94)在org.junit.runners.ParentRunner $ 3.run(ParentRunner.java:290)在org.junit.runners.ParentRunner $ 1.schedule( ParentRunner.java:71)org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)org.junit.runners.ParentRunner.access $ 000(ParentRunner.java:58)org.junit.runners.ParentRunner $ 2 .evaluate(ParentRunner.java:268)org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks .java:70)org.junit.runners.ParentRunner.run(ParentRunner.java:363)org.esp.框架中的org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191)org.eclipse.jdt . org.eclipse.jdt.internal.junit.runner.Tes上的internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) tExecution.run(TestExecution.java:38)在org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)在org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests( RemoteTestRunner.java:675)在org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)在org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java: 192)产生的原因:java.lang.IllegalArgumentException异常:未知命令属性:在com.netflix.hystrix.contrib.javanica.conf.HystrixPropertiesManager.initializeProperties hystrix.command.operator.execution.isolation.thread.timeoutInMilliseconds(HystrixPropertiesManager.java:125 ) 在com.netflix.hystrix.contrib.javanica.conf.HystrixPropertiesManager.initializeCommandProperties(HystrixPropertiesManager.java:99)at com.netflix.hystrix.contrib.javanica.command.GenericSetterBuilder.build(GenericSetterBuilder.java:86)... 47更多

但是,当我删除注释并添加时,我可以使用例外行为成功运行它

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

到我的属性文件

顺便说一句,我唯一的配置是我的主类上的@EnableHystrix,我使用的是spring boot 1.4.0.RELEASE

有什么帮助吗?

1 回答

相关问题