EventListener 和可重试

EventListener and retryable

我想在我的应用程序启动后调用一些代码。有没有办法处理事件:

Started SomeApp in 14.905 seconds (JVM running for 16.268) 

如果另一个应用程序启动,我将尝试。我试过使用 Retryable 但没有在应用程序启动之前执行它并抛出异常,因此应用程序退出。

    @EventListener
    fun handleContextRefresh(event: ContextRefreshedEvent) {

        retryableInvokeConnection()
    }

    @Retryable(
        value = [RetryableException::class, ConnectionException::class],
        maxAttempts = 100000,
        backoff = Backoff(delay = 5)
    )
    private fun retryableInvokeConnection() {
    }

    @Recover
    private fun retryableInvokeConnectionExceptionHandler(ex: ConnectionException) {
    }

也许我应该使用 PostConstruct 和 while 循环。

您不能在同一个 bean 中调用 @Retryable 方法,它会使用重试拦截器绕过代理。将方法移动到另一个bean并注入它。

事件是比使用 @PostConstruct 更好的方法。