我正在尝试配置拓扑以更改保留状态存储的默认目录。
我从文档中读取了属性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-application
和client.id=my-application-client
。但是在上面的第二条日志行中,我看到了client.id=my-application-client-StreamThread-1-consumer
,这就是state.dir=/tmp/kafka-streams
的位置。
在构建拓扑时,还有其他地方需要配置state.dir
吗?