gpt4 book ai didi

java - Togglz 功能状态更改通知

转载 作者:行者123 更新时间:2023-11-30 03:01:00 32 4
gpt4 key购买 nike

我有两个应用程序 - apidashboard。这两个应用程序都使用同一数据库中的相同功能。 Togglz 控制台仅在 dashboard 应用程序中处于 Activity 状态。问题是,当我更改 dashboard 应用程序中的功能状态时,api 应用程序不会立即意识到这一点。我需要重新启动我的 api 才能刷新功能状态。

是否可以在不重新启动的情况下通知api应用程序有关功能状态的更改?

更新 - 添加了 Togglz 配置

这是我的 Maven common 项目中的基本配置(apidashboard 项目依赖于此):

@Configuration
public class FeatureToggleConfiguration {

@Autowired
private DataSource dataSource;

@Bean
public FeatureManager getFeatureManager() {
// @formatter:off
FeatureManager featureManager = new FeatureManagerBuilder()
.stateRepository(new CachingStateRepository(new JDBCStateRepository(dataSource)))
.featureEnum(ApplicationFeatures.class)
.userProvider(new SpringSecurityUserProvider(Authority.Type.ROLE_ADMIN.getName()))
.build();
// @formatter:on
return featureManager;
}

}

ApplicationFeatures(也放置在common项目中):

public enum ApplicationFeatures implements Feature {

// @formatter:off
@EnabledByDefault
@Label("Log Events Feature")
LOG_EVENT_FEATURE,

@EnabledByDefault
@Label("Log Ok Sessions Feature")
LOG_OK_SESSIONS_FEATURE,

@EnabledByDefault
@Label("Log HTTP Requests Data Feature")
LOG_HTTP_REQUESTS_DATA_FEATURE;
// @formatter:on

public boolean isActive() {
return FeatureContext.getFeatureManager().isActive(this);
}

}

这是我的 dashboard 项目中的 DashboardFeatureToggleConfiguration(适用于 Togglz Web 控制台):

@Configuration
public class DashboardFeatureToggleConfiguration {

@Bean
public ServletRegistrationBean getTogglzConsole() {
ServletRegistrationBean servlet = new ServletRegistrationBean();
servlet.setName("TogglzConsole");
servlet.setServlet(new TogglzConsoleServlet());
servlet.setUrlMappings(Collections.singletonList("/togglz/*"));
return servlet;
}

}

最佳答案

您正在使用CachingStateRepository,这导致了您所描述的问题。您基本上有两个选择:

首先,您可以删除CachingStateRepository并直接使用JDBCStateRepository。这样,您将获得更多的数据库点击次数,但这可能是可以接受的。所以你的配置将如下所示:

.stateRepository(new JDBCStateRepository(dataSource))

您可以为 CachingStateRepository 指定 TTL 值,这意味着缓存的条目将仅缓存特定时间:

.stateRepository(
new CachingStateRepository(new JDBCStateRepository(dataSource), 10000)
)

在此示例中,TTL 设置为 10000,这意味着功能状态将仅缓存 10 秒。

关于java - Togglz 功能状态更改通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35976329/

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