我正在Spring Boot
使用RabbitMQ
。在某些情况下,我的消费者线程(SimpleMessageListenerContainer
)因StackOverflowError
而中止。我想要捕获这些错误,以便保存线程,而不必每次都发生这种情况时重启我的应用程序。
org.springframework.amqp.rabbit
使用的池线程?我知道一般来说我们不应该抓住Error
扔掉的东西,但我想知道如果我这样做会在这个特殊情况下会发生什么。
更新
最后,我刚刚使用Future
执行了会在单独线程中导致此类行为的操作,并将任何throwable作为RuntimeException
进行了屏蔽(catch和rethrow)。这样我就可以处理仍然干净的消费者线程中的异常。并不是处理这种问题的最佳方式,但到目前为止效果很好,性能也不是问题。