일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 한빛미디어
- 카프카
- gradle
- 플레이 프레임워크
- spring-cloud-stream
- kafka interactive query
- kafka streams
- scala 2.10
- statestore
- enablekafkastreams
- springboot
- Elk
- kafkastreams
- Slick
- confluent
- Logstash
- coursera
- Elasticsearch
- schema registry
- RabbitMQ
- Spring
- reactive
- spring-kafka
- Kafka
- avo
- spring-batch
- kafkastream
- play framework
- aws
- scala
- Today
- Total
b
Kafka Header 본문
카프카의 Header 지원
- 0.11 버전이후 user(custom) header를 지원하기 시작하였고 아래 위키와 이슈를 참고
- https://cwiki.apache.org/confluence/display/KAFKA/KIP-82+-+Add+Record+Headers
- https://issues.apache.org/jira/browse/KAFKA-4208
실제로 저장되는 형식과 구현체는 아래를 참고
- https://kafka.apache.org/documentation/#record
- https://github.com/apache/kafka/blob/trunk/clients/src/main/java/org/apache/kafka/common/record/DefaultRecord.java#L175
Producer 코드를 따라가며 Key, Header가 어떻게 저장이 되는거 확인
- Producer는 2개의 구현체가 있지만 MockProducer는 테스트 용이기 때문에 KafkaProducer만 확인하면 된다.
- 실제로 KafkaProducer에서 doSend를 보면 인자로 받는 ProducerRecord 안에 headers 정보가 있다.
- 이 정보를 이용하여 byte[] serializedKey = keySerializer.serialize(record.topic(), record.headers(), record.key()); '시리얼라이징 된 객체 데이터'를 생성한다. 하지만 기본 제공 하는 Key Serializer인 ExtendedSerializer은 Header를 무시한채 Key Data만을 가지고 시리얼라이징 한다.