Kafka Streams provides the solution to my problem via GlobalKTable.
"The GlobalKTable is fully bootstrapped upon (re)start of a KafkaStreams instance, which means the table is fully populated with all the data in the underlying topic that is available at the time of the startup. The actual data processing begins only once the bootstrapping has completed."
source: confluent streams developer-guide
This worked perfectly for the last past months.