Потоки Кафки: пунктуальность против процесса - PullRequest
0 голосов
/ 09 июня 2018

В одной задаче в потоковом приложении следующие два метода выполняются независимо (то есть, когда метод «обрабатывает» обрабатывает входящее сообщение из вышестоящего источника, метод «пунктуация» также может выполняться параллельно на основеуказанное расписание и WALL_CLOCK_TIME как PunctuationType?) ИЛИ они совместно используют один и тот же поток, так что это либо тот, который выполняется в данное время, если так, будет ли метод punctuate никогда не вызываться, если метод процесса будет постоянно получать сообщения из вышестоящего источника?

  • Processor.process (ключ K, значение V)
    Обработка записи с заданным ключом и значением.

  • ProcessorContext.schedule (longинтервал, тип PunctuationType, обратный вызов Punctuator)
    Планирует периодическую операцию для процессоров.

Также, пожалуйста, уточните, что означает значение идентификатора раздела, равное -1, в методе пунктуации.Метод пунктуации не специфичен для какого-либо раздела?

  • int ProcessorContext.partition ()
    Возвращает идентификатор раздела текущей входной записи;может быть -1, если он недоступен (например, если этот метод вызывается из точечного вызова)

1 Ответ

0 голосов
/ 10 июня 2018

Оба метода выполняются в одном потоке.Настенные часы на основе punctuate() будут вызываться независимо, если есть входные данные или нет: Между вызовами на process() поток проверяет системное время и при необходимости вызывает punctuate().

Для информации о разделе:да, знаки препинания не зависят от разбиений.Конечно, знаки препинания являются специфическими для задачи, однако, задача может иметь несколько входных разделов (например, если она выполняет merge или join), поэтому неясно, какую информацию о разделе передавать. Для простоты, один разделрегистр обрабатывается так же, как регистр, состоящий из нескольких разделов, а знаки препинания отделяются от разделов.

...