spring - 如何在 Spring Cloud consul config 中将一致性模式更改为 Stale
问题描述
Consul 支持 http 中的一致性模式参数。根据领事文件,它可以有 DEFAULT,CONSISTENT,STALE 。我想在我的一个应用程序中将一致性模式从默认 ot STALE 更改。我在提供的 spring 文档中没有找到任何方法。使用spring cloud consul config可以实现吗?
解决方案
如果您的用例只是在一个人熬夜后才启动领事。你可以使用这个 hack,然后从 Spring boot 的 main 方法中调用它。
public static void changeConsistencyModeToStale() {
for (Field field : QueryParams.class.getFields()) {
if ("DEFAULT".equals(field.getName())) {
try {
field.setAccessible(true);
Field modifiersField = Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
field.set(null, new QueryParams(ConsistencyMode.STALE));
} catch (NoSuchFieldException | IllegalAccessException e) {
log.error("Error while try to set stale mode to consul", e);
}
log.info("Consistence mode has been set to stale successfully");
}
}
}
推荐阅读
- php - Having issues with incrementing a field in the database
- c# - 验证 XML 文件中是否存在 XML 元素
- c# - 在 Azure Function 中处理从查询到 Azure IOT Hub 的 JSON 响应
- epplus - 将长数字序列读取为字符串
- vue.js - Vuejs v-for 在 vuex 状态更新后只生成一个元素
- aws-lambda - 参数验证失败:\n输入中的未知参数:\"include\",必须是以下之一:集群、服务
- xamarin - 更改 Xamarin 移动应用程序的工具栏颜色
- kubernetes - OC Cluster never up Error: timed out waiting for the condition
- python - 我无法在 django 中使用 create_user() 方法注册用户
- docker - 如果注册表中不存在映像,则私有 docker registery 服务器从 docker hub 中提取