Прежде всего, я очень новичок в потоковой обработке, не стесняйтесь поправлять меня, если я неправильно понимаю концепции:)
Я использую Apache Fink. Мой источник - FlinkKafkaConsumer
, который уже добавляет временные метки, которые он берет от Кафки. В своей обработке я хочу иметь возможность использовать водяной знак (почему вопрос выходит за рамки этого вопроса).
Что мне нужно, так это поведение генерации водяного знака, представленное абстрактным классом BoundedOutOfOrdernessTimestampExtractor
.
Но этот класс предоставляет только: public abstract long extractTimestamp(T element);
, который, если вы переопределите его, даст вам элемент, но не отметку времени, изначально предоставленную FlinkKafkaConsumer
The *Интерфейс 1015 *, реализованный BoundedOutOfOrdernessTimestampExtractor
, предоставляет public final long extractTimestamp(T element, long previousElementTimestamp)
, который дает вам ранее назначенное, и в этом случае вы можете просто использовать это повторно. Но этот метод окончательный в BoundedOutOfOrdernessTimestampExtractor
, и поэтому его нельзя использовать.
Так что мой способ обойти это сейчас - скопировать / вставить исходный код BoundedOutOfOrdernessTimestampExtractor
и переписать его виспользуйте previousElementTimestamp
в качестве метки времени.
Мой вопрос: Действительно ли это лучший способ сделать это или есть (лучшая) альтернатива?
Я просто удивлен тем, что копирую классы вставки, я привык (испорчен) к фреймворкам, разработанным так, чтобы такая «базовая» функциональность могла быть реализована с учетом того, что включено. (Или, может, то, что я хочу, на самом деле очень эзотерично :) 1029 *