Avec l'ajout de En-têtes aux enregistrements ( ProducerRecord & ConsumerRecord ) dans Kafka 0.11, est-il possible pour obtenir ces en-têtes lors du traitement d'un sujet avec Kafka Streams? Lors de l'appel de méthodes comme map
sur un KStream
, il fournit des arguments de key
et le value
de l'enregistrement mais aucun moyen que je puisse voir pour accéder au headers
. Ce serait bien si nous pouvions simplement map
sur les ConsumerRecord
s.
ex.
KStreamBuilder kStreamBuilder = new KStreamBuilder();
KStream<String, String> stream = kStreamBuilder.stream("some-topic");
stream
.map((key, value) -> ... ) // can I get access to headers in methods like map, filter, aggregate, etc?
...
quelque chose comme ça fonctionnerait:
KStreamBuilder kStreamBuilder = new KStreamBuilder();
KStream<String, String> stream = kStreamBuilder.stream("some-topic");
stream
.map((record) -> {
record.headers();
record.key();
record.value();
})
...
Les en-têtes d'enregistrements sont accessibles depuis les versions 2.0 de l'API Streams. (Cf. KIP-244 pour plus de détails.)
Vous pouvez accéder aux métadonnées d'enregistrement via l'API du processeur (c'est-à-dire via transform()
, transformValues()
ou process()
), par l'objet "contexte" donné (cf. - https://docs.confluent.io/current/streams/developer-guide/processor-api.html#accessing-processor-context ).
Avant la version 2.0, le contexte expose uniquement la rubrique, la partition, l'offset et l'horodatage --- mais pas les en-têtes qui sont en fait supprimés par Streams en lecture dans ces anciennes versions.
Cependant, les métadonnées ne sont pas disponibles au niveau DSL. Cependant, des travaux sont également en cours pour étendre la DSL: https://cwiki.Apache.org/confluence/display/KAFKA/KIP-159%3A+Introducing+Rich+functions+to+Streams =