• Replying KafkaTemplate

    Replying KafkaTemplate ReplyingKafkaTemplate은 KafkaTemplate의 하위 클래스이다. ReplyingKafkaTemplate는 요청 / 응답 semantics을 제공한다. ReplyingKafkaTemplate는 sendAndReceive(ProducerRecord<K, V> record); 메소드를 추가로 가진다. RequestReplyFuture<K, V, R> sendAndReceive(ProducerRecord<K, V> record); 리턴값은 RequestReplyFuture이다. RequestReplyFuture는 ListenableFuture의 구현체이다. ListenableFuture는 비동기적으로 결과 혹은 예외가 채워진다. 또한 RequestReplyFuture는 sendFuture라는 속성을 가진다. sendFuture는 KafkaTemplate.send()의 결과이다. 따라서 sendFuture를 사용해서 send 연산의 결과를...


  • Avro, Compatibility

    Data Serialization and Evolution 네트워크를 통해 데이터를 전송하거나 파일에 저장할 때 데이터를 바이트로 인코딩해야 한다. 데이터 직렬화 영역은 오랜 역사가 있지만 지난 몇년 동안 상당히 발전했다. 초기에는 Java 직렬화와 같은 프로그래밍 언어 전용 직렬화를 사용했기 때문에 다른 언어에서 해당 데이터를 읽기 어려웠다. 그런 다음 JSON과 같이 언어에 구애받지 않는 형식으로...


  • Spring Boot Compression

    Spring Boot Compression Spring Boot Compression Spring boot에서는 Http Response Body를 압축할 수 있는 기능을 제공한다. 그 설정은 아래와 같다. server.compression.enabled=false server.compression.excluded-user-agents= server.compression.mime-types=text/html,text/xml,text/plain,text/css,text/javascript,application/javascript server.compression.min-response-size=2048 server.compression.enabled (기본값 : false) : 응답 압축을 사용할지 여부 server.compression.excluded-user-agents (기본값 : 빈 리스트) : 압축에서 제외할 사용자 에이전트 목록 server.compression.mime-types : 압축해야 하는 MIME 타입...


  • Embedded Kafka Cluster

    EmbeddedKafkaCluster KafkaStreams의 소스 코드를 보면 Integration Test 작성을 위해서 EmbeddedKafkaCluster를 많이 사용하는것을 볼 수 있다. EmbeddedKafkaCluster를 사용하면 마치 로컬에서 Kafka Broker를 실행시키는 것과 같은 효과를 얻을 수 있다. public class StreamIntegrationTest { private static final int NUM_BROKERS = 1; @ClassRule public static final EmbeddedKafkaCluster CLUSTER = new EmbeddedKafkaCluster(NUM_BROKERS); @Before public...


  • Monitoring Consumer LAG - Burrow

    Burrow Burrow - Kafka Consumer Lag Checking Burrow는 카프카의 모니터링 툴로 Consumer의 LAG을 모니터링할 때 주로 사용된다. 모든 Consumer의 커밋 오프셋을 모니터링한다. 또한 필요할 때 Consumer의 상태를 계산한다. HTTP 엔드포인트를 통해 상태를 요청할 수 있으며, 다른 카프카 클러스터의 정보를 제공받을 수 있다. 이메일이나 HTTP 호출을 통해 다른 서비스로 상태를 보낼...