配置state.dir以将状态存储数据保留在其他目录中

时间:2019-03-12 16:06:47

标签: apache-kafka apache-kafka-streams

我正在尝试配置拓扑以更改保留状态存储的默认目录。

我从文档中读取了属性state.dir,这是我需要更改的。

默认值为/tmp/kafka-streams,我想将其更改为/opt/kafka-streams,因为在我们的生产系统中,会定期清理/tmp目录。

我的应用程序只有一种拓扑,并且我将属性state.dir设置为值/opt/kafka-streams

在日志中,我首先看到打印以下内容,确认正在使用/opt/kafka-streams

   | loglevel="INFO"  |  thread="main"  |  logger="org.apache.kafka.streams.StreamsConfig  "  StreamsConfig values: 
    application.id = my-application
    application.server = 
    bootstrap.servers = [192.168.92.118:9092]
    buffered.records.per.partition = 1000
    cache.max.bytes.buffering = 10485760
    client.id = my-application-client
    commit.interval.ms = 30000
    connections.max.idle.ms = 540000
      ...
      ...
      ...
    state.dir = /opt/kafka-streams

但是随后...在上面的日志之后不久,下面又打印了另一条日志行,显示/tmp/kafka-streams仍在某处使用:

   | loglevel="INFO"  |  thread="main"  |  logger="org.apache.kafka.streams.StreamsConfig  "  StreamsConfig values: 
    application.id = my-application
    application.server = 
    bootstrap.servers = [192.168.92.118:9092]
    buffered.records.per.partition = 1000
    cache.max.bytes.buffering = 10485760
    client.id = my-application-client-StreamThread-1-consumer
      ...
      ...
      ...
    state.dir = /tmp/kafka-streams

我的应用程序只有一种拓扑。它正在使用处理器api。一个处理器在状态存储中添加内容。然后是一个标点符号,它定期从状态存储中读取并输出有关输出主题的消息。

构建拓扑时,我使用了application.id=my-applicationclient.id=my-application-client。但是在上面的第二条日志行中,我看到了client.id=my-application-client-StreamThread-1-consumer,这就是state.dir=/tmp/kafka-streams的位置。

在构建拓扑时,还有其他地方需要配置state.dir吗?

0 个答案:

没有答案