Je travaille actuellement avec Kafka et Flink, j'ai kafka exécuté sur mon ordinateur local et j'ai créé un sujet en cours de consommation.
Bureau\kafka\bin\windows> kafka-console-consumer.bat --zookeeper localhost: 2181 -test test
mais il ne fait que récupérer le message,
y a-t-il un moyen d'obtenir plus de détails sur le message? laisse dire le temps? clé? J'ai vérifié kafka documentation mais je n'ai rien trouvé à ce sujet
Si vous utilisez une console prête à l'emploi (j'utilise Kafka 0.9.0.1), vous pouvez uniquement imprimer la clé et la valeur des messages en utilisant différents formats. Pour imprimer la clé, définissez la propriété print.key=true
.
Il y a une autre propriété key.separator
qui par défaut est "\ t" (un onglet) que vous pouvez également modifier.
Pour définir ces propriétés, vous pouvez créer un fichier de configuration et utiliser --consumer.config <config file>
ou transmettez les propriétés avec --property key=value
.
Vous pouvez également implémenter votre propre formateur et l'utiliser avec --formatter
mais vous aurez toujours juste la clé et la valeur car c’est ce que trait MessageFormatter (voir writeTo ci-dessous).
trait MessageFormatter {
def writeTo(key: Array[Byte], value: Array[Byte], output: PrintStream)
def init(props: Properties) {}
def close() {}
}
Par exemple:
./bin/kafka-console-consumer.sh --new-consumer --bootstrap-server kafka-1:9092 --topic topic1 --property print.key=true --property key.separator="-" --from-beginning
key-p1
key-p2
key-p3
null-4
null-8
null-0
Utilisez la commande ci-dessous:
kafka-console-consumer --bootstrap-server localhost:9092 --topic topic_name \
--from-beginning --formatter kafka.tools.DefaultMessageFormatter \
--property print.key=true --property print.value=true \
--property key.deserialzer=org.Apache.kafka.common.serialization.StringD \
--property value-deserializer=org.Apache.kafka.common.serialization.LongDeserializer