我有一个正在运行几个月的应用程序,但是最近该应用程序在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
答案 0 :(得分:0)
您在课程路径上缺少spring-retry
。您正在使用什么进行依赖项管理?使用Maven或Gradle时,应将其自动添加到类路径中,因为它是spring-amqp
的传递依赖项。
重新启动应用程序后,消息消耗正常运行。
那没有道理;除非您遇到某种奇怪的类加载器问题。
尝试使用-verbose
运行以获取所有类加载的日志。