1

我正在使用 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();
    }
4

0 回答 0