Java 这是在spring boot中停止打印AmqpRejectAndDontRequeueException stacktrace日志的一种方法吗?

Java 这是在spring boot中停止打印AmqpRejectAndDontRequeueException stacktrace日志的一种方法吗?,java,spring-boot,exception,rabbitmq,Java,Spring Boot,Exception,Rabbitmq,我试图在spring boot应用程序中设置死信队列,但当我抛出AmqpRejectAndDontRequeueException时,我不希望在控制台中打印整个堆栈跟踪。 有没有更好的办法 我试图捕捉那个异常,但在那个死信队列停止工作之后 2019-06-25 17:26:33.221 WARN 19812 --- [ntContainer#0-1] s.a.r.l.ConditionalRejectingErrorHandler : Execution of Rabbit message l

我试图在spring boot应用程序中设置死信队列,但当我抛出AmqpRejectAndDontRequeueException时,我不希望在控制台中打印整个堆栈跟踪。 有没有更好的办法

我试图捕捉那个异常,但在那个死信队列停止工作之后

2019-06-25 17:26:33.221  WARN 19812 --- [ntContainer#0-1] s.a.r.l.ConditionalRejectingErrorHandler : Execution of Rabbit message listener failed.

org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException: Listener method 'public void com.example.consumer.Consumer.process(com.example.consumer.api.PaymentOrder)' threw exception
    at org.springframework.amqp.rabbit.listener.adapter.MessagingMessageListenerAdapter.invokeHandler(MessagingMessageListenerAdapter.java:198) ~[spring-rabbit-2.1.6.RELEASE.jar:2.1.6.RELEASE]
    at org.springframework.amqp.rabbit.listener.adapter.MessagingMessageListenerAdapter.onMessage(MessagingMessageListenerAdapter.java:127) ~[spring-rabbit-2.1.6.RELEASE.jar:2.1.6.RELEASE]
    at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:1552) ~[spring-rabbit-2.1.6.RELEASE.jar:2.1.6.RELEASE]
    at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.actualInvokeListener(AbstractMessageListenerContainer.java:1478) ~[spring-rabbit-2.1.6.RELEASE.jar:2.1.6.RELEASE]
    at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:1466) ~[spring-rabbit-2.1.6.RELEASE.jar:2.1.6.RELEASE]
    at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:1461) ~[spring-rabbit-2.1.6.RELEASE.jar:2.1.6.RELEASE]
    at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.executeListener(AbstractMessageListenerContainer.java:1410) ~[spring-rabbit-2.1.6.RELEASE.jar:2.1.6.RELEASE]
    at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.doReceiveAndExecute(SimpleMessageListenerContainer.java:870) [spring-rabbit-2.1.6.RELEASE.jar:2.1.6.RELEASE]
    at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.receiveAndExecute(SimpleMessageListenerContainer.java:854) [spring-rabbit-2.1.6.RELEASE.jar:2.1.6.RELEASE]
    at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$1600(SimpleMessageListenerContainer.java:78) [spring-rabbit-2.1.6.RELEASE.jar:2.1.6.RELEASE]
    at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.mainLoop(SimpleMessageListenerContainer.java:1137) [spring-rabbit-2.1.6.RELEASE.jar:2.1.6.RELEASE]
    at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1043) [spring-rabbit-2.1.6.RELEASE.jar:2.1.6.RELEASE]
    at java.lang.Thread.run(Thread.java:748) [na:1.8.0_144]
Caused by: com.example.consumer.InsufficientFundsException: insufficient funds on account XK45 0654 5271 7424 1755
    at com.example.consumer.Consumer.process(Consumer.java:28) ~[classes/:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_144]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_144]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_144]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_144]
    at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:171) ~[spring-messaging-5.1.7.RELEASE.jar:5.1.7.RELEASE]
    at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:120) ~[spring-messaging-5.1.7.RELEASE.jar:5.1.7.RELEASE]
    at org.springframework.amqp.rabbit.listener.adapter.HandlerAdapter.invoke(HandlerAdapter.java:49) ~[spring-rabbit-2.1.6.RELEASE.jar:2.1.6.RELEASE]
    at org.springframework.amqp.rabbit.listener.adapter.MessagingMessageListenerAdapter.invokeHandler(MessagingMessageListenerAdapter.java:190) ~[spring-rabbit-2.1.6.RELEASE.jar:2.1.6.RELEASE]
    ... 12 common frames omitted

它应该在一行上,带有一条错误描述消息,死信队列应该可以工作。

我刚刚在application.yml文件中解决了同样的问题

logging:
  level:
    org.springframework.amqp.rabbit.listener.ConditionalRejectingErrorHandler: OFF
如果您使用的是application.properties文件,则可以在下面一行

logging.level.org.springframework.amqp.rabbit.listener.ConditionalRejectingErrorHandler=OFF

您应该查看日志,看看哪个类正在打印异常。在您的日志中,您可以看到org.springframework.amqp.rabbit.listener.ConditionalRejectingErrorHandler是异常的来源,因此像上面提到的Rajesh一样,在logs to OFF中设置应该可以工作。在我的例子中,我必须将org.springframework.integration.handler.LoggingHandler设置为OFF

logging.level:
    org.springframework.integration.handler.LoggingHandler: OFF