• Configuring a Streams Application

    Configuring a Streams Application StreamsConfig Kafka Streams를 설정하려면 StreamsConfig 객체를 사용하면 된다. 다음과 같은 순서로 설정을 할 수 있다. java.util.Properties 객체를 생성 파라미터를 세팅 StreamsConfig 객체를 생성할 때 Properties를 생성자를 통해서 전달한다. 아래는 StreamsConfig 객체를 생성하는 간단한 샘플코드이다. import java.util.Properties; import org.apache.kafka.streams.StreamsConfig; Properties settings = new Properties(); // Set a...


  • Spring Boot Starter

    Spring Boot Starter Spring Boot를 사용하다보면 spring-boot-starter-xxxx 형태의 프로젝트를 많이 사용하게 된다. Spring Boot Starter 프로젝트는 POM 파일 제공을 통해 필요한 dependecy의 구성을 한 번에 제공하는 프로젝트이다. 예를 들어, spring-boot-starter-web의 경우 Web Application을 개발할 때 필요한 dependency의 구성을 한 번에 제공한다. spring-boot-starter-web을 추가하면 아래와 같은 dependency들이 추가된다. org.springframework.boot:spring-boot-starter org.springframework.boot:spring-boot-starter-tomcat org.springframework:spring-web...


  • Spring Kafka Retry

    Spring Kafka - Retrying Retrying Deliveries Spring Kafka에는 Retry 기능이 존재한다. Retry 기능을 사용하면 listener 메소드는 RetryingMessageListenerAdapter를 통해서 호출이 된다. Retry 기능을 사용하려면 RetryTemplate과 RecoveryCallback<Void>(callback은 설정하지 않아도 된다)를 container factory에 설정하면 된다. RetryTemplate과 RecoveryCallback<Void>에 대해서 더 자세히 알고 싶다면 spring-retry를 참고하자. 만약에 recovery callback을 등록하지 않으면, retry 실패시 예외는 컨테이너에게...


  • Kafka Offsets

    Kafka Offsets 본 글에서는 Consumer의 Offset에 대해 알아보도록 하자 Offsets and Consumer Position Kafka는 각각의 Record에 대해 오프셋을 가지고 있다. 이 오프셋은 파티션 내에서 Record에 대한 고유한 식별자로 사용된다. 또한 Consumer의 파티션내의 position를 나타낸다. 예를 들어 Consumer의 Position이 5인 경우에 오프셋이 0부터 4까지인 Record는 이미 처리하였음을 의미한다. 또한 다음 poll()에서...


  • Spring Kafka Transaction

    Spring Kafka Transaction Spring Kafka Transaction과 관련된 라이브러리를 정리한 글이다. 더 자세한 내용은 레퍼런스를 참고하길 바란다. Spring for Apache Kafka adds transaction supoort in several ways KafkaTransactionManager Transactional KafkaMessageListenerContainer Local Transaction with KafkaTemplate Transactions Transactions을 사용하려면 DefaultKafkaProducerFactory의 setTransactionIdPrefix 메소드를 통해서 transactionIdPrefix를 설정하면 된다. KafkaTemplate, KafkaTransactionManager는 Producer 생성을 DefaultKafkaProducerFactory에 위임한다. DefaultKafkaProducerFactory는...