gpt4 book ai didi

java - 如何使 dropwizard 应用程序忽略所有调用,直到启动完成

转载 作者:行者123 更新时间:2023-12-02 00:57:52 25 4
gpt4 key购买 nike

我被要求为 dropwizard 应用程序设置一种方法,以忽略所有调用,直到初始化完成。我们的应用程序使用 Guava 缓存来复制数据库;因此,所有调用都会转到它而不是直接转到数据库。该缓存是在初始化期间构建的 - 因此,我想设置 dropwizard 的初始化方法来提供等待消息,直到缓存完成构建,而不是尝试接受任何调用。但是,我不确定如何解决这个问题。

到目前为止,我确实知道任何解决方案都必须进入主类中的初始化方法,并且有一种方法来检查初始化是否完成。我尝试查看 dropwizard 是否有任何钩子(Hook)来检查初始化是否完成,但我没有找到任何东西。

最佳答案

HTTP(S) 连接器仅在 Application#run(T configuration, Environment environment) 之后启动方法完成。

您可以添加阻塞方法调用或使用 CountDownLatch等待填充缓存。

示例:

@Override
public void run(Configuration configuration, Environment environment) {
Cache dbCache = initializeCache(configuration);
// Custom initializations
// [...]

populateCache(dbCache); // Blocks until the cache has been successfully populated
}

或者,如果您异步填充缓存,则可以使用 CountDownLatch:

@Override
public void run(Configuration configuration, Environment environment) {
Cache dbCache = initializeCache(configuration);
CountDownLatch countDownLatch = new CountDownLatch(1);
// Custom initializations
// [...]

asyncPopulateCache(dbCache, countDownLatch);

countDownLatch.await(); // Blocks until the cache has been successfully populated
}

关于java - 如何使 dropwizard 应用程序忽略所有调用,直到启动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57795918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com