使用者线程错误,在SimpleMessageListenerContainer

时间:2018-10-02 16:06:00

标签: spring rabbitmq spring-amqp

我有一个正在运行几个月的应用程序,但是最近该应用程序在mq收到消息期间抛出错误。 引发错误时,应用程序不会消耗更多消息。重新启动应用程序后,消息消耗正常。

  

错误:   4644201:[2018-10-02 10:34:31,068]错误[SimpleAsyncTaskExecutor-1] o.s.a.r.l.SimpleMessageListenerContainer $ AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1473)-使用者线程错误,线程中止。   4644418-java.lang.NoClassDefFoundError:org / springframework / classify / SubclassClassifier $ ClassComparator   4644514-在org.springframework.classify.SubclassClassifier.classify(SubclassClassifier.java:115)   4644604-在org.springframework.classify.BinaryExceptionClassifier.classify(BinaryExceptionClassifier.java:104)   4644708-位于org.springframework.retry.policy.SimpleRetryPolicy.retryForException(SimpleRetryPolicy.java:191)   4644809-在org.springframework.retry.policy.SimpleRetryPolicy.canRetry(SimpleRetryPolicy.java:143)   4644901-在org.springframework.retry.support.RetryTemplate.canRetry(RetryTemplate.java:357)   4644986-在org.springframework.retry.support.RetryTemplate.doExecute(RetryTemplate.java:291)   4645072-在org.springframework.retry.support.RetryTemplate.execute(RetryTemplate.java:172)   4645156-在org.springframework.retry.interceptor.RetryOperationsInterceptor.invoke(RetryOperationsInterceptor.java:98)   4645268- at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)   4645378-位于org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)   4645471- at com.sun.proxy。$ Proxy89.invokeListener(来源不明)   4645529-位于org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.invokeListener(SimpleMessageListenerContainer.java:1238)   4645662- at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.executeListener(AbstractMessageListenerContainer.java:727)   4645799-在org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.doReceiveAndExecute(SimpleMessageListenerContainer.java:1192)   4645937-在org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.receiveAndExecute(SimpleMessageListenerContainer.java:1176)   4646073- at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access $ 1100(SimpleMessageListenerContainer.java:99)   4646201-位于org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer $ AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1370)   4646354-位于java.lang.Thread.run(Thread.java:748)   4646396-造成原因:java.lang.ClassNotFoundException:org.springframework.classify.SubclassClassifier $ ClassComparator

1 个答案:

答案 0 :(得分:0)

您在课程路径上缺少spring-retry。您正在使用什么进行依赖项管理?使用Maven或Gradle时,应将其自动添加到类路径中,因为它是spring-amqp的传递依赖项。

  

重新启动应用程序后,消息消耗正常运行。

那没有道理;除非您遇到某种奇怪的类加载器问题。

尝试使用-verbose运行以获取所有类加载的日志。