在StackOverflowError之后保存线程

时间:2016-12-05 10:43:42

标签: java spring-boot spring-rabbit

我正在Spring Boot使用RabbitMQ。在某些情况下,我的消费者线程(SimpleMessageListenerContainer)因StackOverflowError而中止。我想要捕获这些错误,以便保存线程,而不必每次都发生这种情况时重启我的应用程序。

  1. 是一个在可以继续工作的状态下经历过该错误的线程还是应该让它死掉?
  2. 如果我应该让它死掉,我该如何补充org.springframework.amqp.rabbit使用的池线程?
  3. 我知道一般来说我们不应该抓住Error扔掉的东西,但我想知道如果我这样做会在这个特殊情况下会发生什么。

    更新

    最后,我刚刚使用Future执行了会在单独线程中导致此类行为的操作,并将任何throwable作为RuntimeException进行了屏蔽(catch和rethrow)。这样我就可以处理仍然干净的消费者线程中的异常。并不是处理这种问题的最佳方式,但到目前为止效果很好,性能也不是问题。

0 个答案:

没有答案