Сконфигурируйте state.dir для хранения данных хранилища состояний в другом каталоге - PullRequest
0 голосов
/ 12 марта 2019

Я пытаюсь настроить топологию для изменения каталога по умолчанию, в котором хранятся хранилища состояний.

Я прочитал из документов, что свойство 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

Мое приложение имеет только 1 топологию. Это использует процессор API. Один процессор добавляет вещи в государственный магазин. Затем есть пунктуатор, который периодически читает из хранилища состояний и выводит сообщения по теме вывода.

При построении топологии я использовал application.id=my-application и client.id=my-application-client. Но во 2-й строке журнала выше я вижу client.id=my-application-client-StreamThread-1-consumer, и именно здесь state.dir=/tmp/kafka-streams.

Есть ли другое место, где мне нужно настроить state.dir при построении моей топологии?

...