Все состояние, необходимое для оконных API-интерфейсов Flink, управляется Flink, поэтому вам не нужно ничего делать. Пока включена контрольная точка, буфер окна будет контрольной точкой и восстанавливаться по мере необходимости.
Обычно функция CountFunction не имеет состояния, которое необходимо проверить. Если задание не выполняется, пока CountFunction находится в середине перебора содержимого окна, задание будет перемотано, и CountFunction будет вызван снова с теми же входными данными.
Если вам нужно сохранить состояние в CountFunction, см. Использование состояния каждого окна в ProcessWindowFunction для получения информации о том, как это сделать. Похоже, вы захотите использовать globalState () (состояние, которое сохраняется в течение всего времени), к которому вы можете получить доступ через объект Context, переданный вашей оконной функции процесса.
Пока у вас нет потока с ключами, я предлагаю вам использовать механизм состояний с ключами, описанный выше. Вы можете преобразовать свой поток без ключа в поток с ключом, используя keyBy с постоянным ключом.