Apache Kafka Streams:如何从使用内存中键值存储切换到持久键值存储?

时间:2019-06-09 23:24:15

标签: java apache-kafka apache-kafka-streams

我当前的代码使用InMemoryKeyValueStore,它避免了对磁盘的任何持久性。我想使用Stores#persistentKeyValueStore。我当前的代码如下:

static StoreBuilder<KeyValueStore<String, LinkedList<StoreItem>>> makeStoreBuilder(
            final String storeKey,
            final Serde<LinkedList<StoreItem>> valueSerde,
            final boolean loggingDisabled) {

        final StoreBuilder<KeyValueStore<String, LinkedList<StoreItem>>> storeBuilder =
                Stores.keyValueStoreBuilder(Stores.inMemoryKeyValueStore(storeKey), Serdes.String(), valueSerde);
        return storeBuilder;
    }

要让我使用Stores#persistentKeyValueStore,我是否可以像这样更改调用:

final StoreBuilder<KeyValueStore<String, LinkedList<StoreItem>>> storeBuilder =
                Stores.keyValueStoreBuilder(Stores.persistentKeyValueStore(storeKey), Serdes.String(), valueSerde);

我是否可以知道这是否是更改此问题的正确方法,是否会产生任何影响?我是Kafka和Streams API的新手,希望能获得一些见解。

谢谢。

1 个答案:

答案 0 :(得分:1)

是的,使用Stores.persistentKeyValueStore(topicName)将状态持久化到磁盘。请确保:

  • 您已分配了足够的磁盘空间
  • 为数据设置适当的保留期限

我看到您已禁用日志记录,这是故意进行的吗?

相关问题