2016-02-12 273 views
1

我在我的应用程序中使用了Eureka,Zuul,Hystrix和复合服务。 RabbitMq我用于消息队列。运行测试用例时,我遇到了以下异常。我的测试运行良好,但得到的例外如下:将队列添加到队列中时出错

11:38:16.597 [task-scheduler-4] ERROR o.s.c.n.h.amqp.HystrixStreamTask -  Error adding metrics to queue 
java.lang.IllegalStateException: Queue full 
at java.util.AbstractQueue.add(Unknown Source) ~[na:1.8.0_66] 
at org.springframework.cloud.netflix.hystrix.amqp.HystrixStreamTask.gatherMetrics(H ystrixStreamTask.java:289) ~[spring-cloud-netflix-hystrix-amqp- 1.0.0.RELEASE.jar:1.0.0.RELEASE] 
at sun.reflect.GeneratedMethodAccessor62.invoke(Unknown Source) ~[na:na] 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~ [na:1.8.0_66] 
at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_66] 
at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMeth odRunnable.java:65) [spring-context-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) [spring-context-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [na:1.8.0_66] 
at java.util.concurrent.FutureTask.runAndReset(Unknown Source) [na:1.8.0_66] 
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source) [na:1.8.0_66] 
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) [na:1.8.0_66] 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.8.0_66] 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.8.0_66] 
at java.lang.Thread.run(Unknown Source) [na:1.8.0_66] 
+0

您正在使用哪个云春的版本?将Spring Cloud从Angel.SR4升级到Brixton.M4后出现类似错误。我的RabbitMQ队列是**不是**完整的,至少有一些指标可以通过。 – DagR

回答

0

看起来你的队列已满。使用x-max-length或x-max-length-bytes属性增加队列长度。

的更多信息,可以发现here

0

我升级春云从Angel.SR4Brixton.M4后经历了类似的问题。替换maven dependency <artifactId>spring-cloud-starter-bus-amqp</artifactId>

<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-stream-rabbit</artifactId> </dependency> 似乎已经解决了这个问题。根据您的依赖关系,这可能会有所帮助!

更完整的看看我DEPS:

<dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-jetty</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-redis</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-actuator</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
     <exclusions> 
      <exclusion> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-starter-tomcat</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.cloud</groupId> 
     <artifactId>spring-cloud-netflix-hystrix-amqp</artifactId> 
     <version>${spring.cloud.netflix.hystrix.amqp.version}</version> 
     <exclusions> 
      <exclusion> 
       <groupId>com.goldmansachs</groupId> 
       <artifactId>gs-collections-api</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>com.goldmansachs</groupId> 
       <artifactId>gs-collections</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.cloud</groupId> 
     <artifactId>spring-cloud-starter-stream-rabbit</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-security</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.cloud</groupId> 
     <artifactId>spring-cloud-starter-feign</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.cloud</groupId> 
     <artifactId>spring-cloud-starter-hystrix</artifactId> 
    </dependency>