我正在使用 LaunchDarkly 的 Java + Redis SDK 开发 POC,我的要求之一是以“离线”模式初始化第二个 LaunchDarkly 客户端。由于我现有的架构,一个应用程序将连接到 LaunchDarkly 并为 Redis 实例补充水分。第二个应用程序将连接到同一个数据存储,但客户端将初始化为“离线”——目前有没有办法让我从离线客户端读取存储的事件并将它们刷新到 LaunchDarkly 服务器?
在下面的代码片段中,我正在初始化第一个客户端 + redis 存储,然后在连接到同一本地 redis 实例的后台线程中初始化第二个客户端。我可以确认,当我运行此代码段时,我看不到 LaunchDarkly UI 中填充的事件。
注意:这是确定 LaunchDarkly 是否适用于我的用例的 POC。它不是生产级实现。
public static void main(String[] args) throws IOException {
LDConfig config = new LDConfig.Builder().dataStore(Components
.persistentDataStore(
Redis.dataStore().uri(URI.create("redis://127.0.0.1:6379")).prefix("my-key-prefix"))
.cacheSeconds(30)).build();
LDClient ldClient = new LDClient("SDK-KEY", config);
Runnable r = new Runnable() {
@Override
public void run() {
LDConfig offlineConfig = new LDConfig.Builder().dataStore(Components
.persistentDataStore(
Redis.dataStore().uri(URI.create("redis://127.0.0.1:6379")).prefix("my-key-prefix"))
.cacheSeconds(30)).offline(true).build();
LDClient offlineClient = new LDClient("SDK-KEY", offlineConfig);
String uniqueId = "abcde";
LDUser user = new LDUser.Builder(uniqueId).custom("customField", "customValue").build();
boolean showFeature = offlineClient.boolVariation("test-feature-flag", user, false);
if (showFeature) {
System.out.println("Showing your feature");
} else {
System.out.println("Not showing your feature");
}
try {
offlineClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
};
ExecutorService executor = Executors.newCachedThreadPool();
executor.submit(r);
executor.shutdown();
ldClient.close();
}