2016-12-30 27 views
5

Tôi hiện đang làm việc với Kafka và Flink, tôi có kafka đang chạy trên máy tính cục bộ của mình và tạo ra một chủ đề đang được tiêu thụ.Kafka Consumer lấy cặp giá trị khóa

Desktop \ Kafka \ bin \ windows> Kafka-console-consumer.bat --zookeeper localhost: 2181 kiểm tra -topic

nhưng nó chỉ được lấy thông điệp, enter image description here

là có một cách để nhận thêm chi tiết về tin nhắn? cho phép nói thời gian? Chìa khóa? Tôi đã kiểm tra tài liệu kafka nhưng tôi không tìm thấy nội dung nào về chủ đề này

Trả lời

9

Sử dụng ngoài bảng điều khiển dành cho người tiêu dùng (Tôi đang sử dụng Kafka 0.9.0.1), bạn chỉ có thể in khóa và giá trị của thư bằng các định dạng khác nhau. Để in khóa, hãy đặt thuộc tính print.key thành true.

Có một thuộc tính key.separator khác theo mặc định là "\ t" (tab) mà bạn cũng có thể thay đổi thành bất kỳ thứ gì bạn muốn.

Để đặt các thuộc tính này, bạn có thể tạo tệp cấu hình và sử dụng --consumer.config hoặc chuyển các thuộc tính bằng cách sử dụng --property key = value.

Bạn cũng có thể triển khai trình định dạng của riêng mình và sử dụng nó với tùy chọn - định dạng nhưng bạn vẫn sẽ chỉ có khóa và giá trị vì đó là những đặc điểm MessageFormatter cung cấp (xem writeTo bên dưới).

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

    def init(props: Properties) {} 

    def close() {} 
} 

Ví dụ:

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

Tôi không muốn mở một câu hỏi mới, mà đang được nói tôi nghĩ Kafka nên cung cấp một cách để xác định quan trọng từ nhà sản xuất cho mỗi tin nhắn hoặc ít nhất cho mỗi chủ đề. Bạn có biết tôi có thể sử dụng cái gì không? –

+1

$ ./bin/kafka-console-producer.sh --broker-list kafka-1: 9092 --topic topic1 --property parse.key = true --property key.separator = "-" khóa-giá trị –

Các vấn đề liên quan