2016-12-30 16 views
5

Obecnie pracuję z Kafka i Flink, mam kafka działającego na moim lokalnym komputerze i stworzyłem temat, który jest konsumowany.Kafka Consumer otrzymaj parę wartości klucza

Pulpit \ Kafka \ bin \ WINDOWS> Kafka-console-consumer.bat --zookeeper localhost: 2181 -topic Test

ale to jest tylko pobieranie wiadomości, enter image description here

czy istnieje sposób, aby uzyskać dalsze szczegóły dotyczące wiadomości? powiedzmy czas? klawisz? Sprawdziłem dokumentację kafka, ale nie znalazłem czegoś na ten temat.

Odpowiedz

9

Korzystając z konsoli odbiornika (używam Kafki 0.9.0.1) można wydrukować tylko klucz i wartość wiadomości przy użyciu różnych formatów. Aby wydrukować klucz, ustaw właściwość print.key na true.

Istnieje jeszcze jedna właściwość key.separator, która domyślnie to "\ t" (zakładka), którą można również zmienić na dowolną.

Aby ustawić te właściwości, można utworzyć plik konfiguracyjny i użyć --consumer.config lub przekazać właściwości za pomocą --property key = value.

Możesz także zaimplementować swój własny formatter i użyć go z opcją --formatter, ale nadal będziesz miał tylko klucz i wartość, ponieważ to zapewnia cecha MessageFormatter (patrz writeTo poniżej).

trait MessageFormatter { 
    def writeTo(key: Array[Byte], value: Array[Byte], output: PrintStream) 

    def init(props: Properties) {} 

    def close() {} 
} 

Na przykład:

./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 
+0

nie chcę, aby otworzyć nowe pytanie, co zostało powiedziane Myślę Kafka powinien zapewnić, aby określić klucz od producenta dla każdej wiadomości lub przynajmniej dla każdego tematu. Czy wiesz, z czego mogę korzystać? –

+1

$ ./bin/kafka-console-producer.sh --broker-list kafka-1: 9092 --topic topic1 --property parse.key = true --property key.separator = "-" thekey-thevalue –

Powiązane problemy