Kafka Headers

KIP-82 - Add Record Headers 에서 Custom Headers 가 추가되었다. Spring 을 사용하는경우 Spring Integration 을 통해 Kafka 를 사용한다. 이때 Message(record) 를 생산(produce) 할 때 ProducerRecord 클래스를 사용한다.

해당 클래스에서 headers 라는 필드가 추가되었다. headers 필드에 담는 경우 아래 Header 부분에 포함되며, ProducerRecord 의 value 에 headers 를 담아서 보낼 수도 있다.

Message =>
        Length => varint
        Attributes => int8
        TimestampDelta => varlong
        OffsetDelta => varint
        KeyLen => varint
        Key => data
        ValueLen => varint
        Value => data
        Headers => [Header] <------------ NEW Added Array of headers
         
Header =>
        Key => string (utf8) <------------------------------- NEW UTF8 encoded string (uses varint length)
        Value => bytes  <------------------------------------ NEW header value as data (uses varint length)

The 0.11.0.0 client introduced support for headers in messages. As of version 2.0, Spring for Apache Kafka now supports mapping these headers to and from spring-messaging MessageHeaders.