web-dev-qa-db-fra.com

Comment valider manuellement avec Kafka Stream?

Existe-t-il un moyen de valider manuellement avec Kafka Stream?

Habituellement, en utilisant le KafkaConsumer, je fais quelque chose comme ci-dessous:

while (true) {
    ConsumerRecords<String, String> records = consumer.poll(100);
    for (ConsumerRecord<String, String> record : records){
       // process records
    }
   consumer.commitAsync();
}

Où j'appelle commit manuellement. Je ne vois pas d'API similaire pour KStream.

14
Glide

Les validations sont gérées par Streams en interne et entièrement automatiques, et il n'y a donc généralement aucune raison de les valider manuellement. Notez que Streams gère cela différemment de la validation automatique du consommateur - en fait, la validation automatique est désactivée pour le consommateur utilisé en interne et Streams gère les validations "manuellement". La raison en est que les validations ne peuvent se produire qu'à certains moments du traitement pour garantir qu'aucune donnée ne peut être perdue (il existe de nombreuses dépendances internes en ce qui concerne la mise à jour de l'état et les résultats de vidage).

Pour des validations plus fréquentes, vous pouvez réduire l'intervalle de validation via le paramètre StreamsConfigcommit.interval.ms.

Néanmoins, les validations manuelles sont possibles indirectement, via l'API de processeur de bas niveau. Vous pouvez utiliser l'objet context fourni via la méthode init() pour appeler context#commit(). Notez que ce n'est qu'une "demande à Streams" de s'engager dès que possible - ce n'est pas émettre un commit directement.

28
Matthias J. Sax