I am doing integration tests for Kafka and I produce a message with a key integration-test-sub-key
and I want to read it later and compare result to what is expected.
I tried doing
$ kcat -b localhost:9092 -t topic-name -C -o -1 -c 1 -k integration-test-sub-key
to filter the message by integration-test-sub-key
key, but it doesn't work.
How to do this? Do I need to use grep or something?
Yes, you need to use grep
.
Kafka topics are not indexed by key. You need to scan the whole topic using -o earliest
, not -o -1
, as that means one offset from the end, then remove -c 1
.
Also, -k <value>
is only a producer option, not a valid consumer flag.
If this is a use-case you want to use often, then use ksqlDB, or Kafka Streams to create a KTable, where you have all keys with their latest values.