Kafka
-
컨슈머 오프셋 관리컨슈머의 오프셋의 역할은 메시지의 위치를 나타내는 것입니다오프셋이 중요한 이유는 컨슈머가 일시적으로 동작을 멈추고 재시작하는 경우에 새로운 컨슈머가 기존 컨슈머의 역할을 대신하는 경우에 기존 컨슈머의 마지막 메시지 위치부터 새로운 컨슈머가 메시지를 가져오기 때문입니다토픽에 저장하여 관리 그룹 코디네이터컨슈머 그룹이 구독한 토픽의 파티션들과 그룹의 멤버들을 트래킹 스태틱 멤버십(Static Membership)컨슈머 그룹 내에서 컨슈머가 재시작 등으로 컨슈머 그룹에서 나갔다가 다시 합류하더라도 리밸런싱이 일어나지 않게 하는 기능group.instance.id값을 컨슈머를 식별하기 위한 고유값을 입력default : null스태틱 멤버십 또한 session.timeout.ms 시간을 넘어갈..
[Kafka] Consumer 내부 동작 원리컨슈머 오프셋 관리컨슈머의 오프셋의 역할은 메시지의 위치를 나타내는 것입니다오프셋이 중요한 이유는 컨슈머가 일시적으로 동작을 멈추고 재시작하는 경우에 새로운 컨슈머가 기존 컨슈머의 역할을 대신하는 경우에 기존 컨슈머의 마지막 메시지 위치부터 새로운 컨슈머가 메시지를 가져오기 때문입니다토픽에 저장하여 관리 그룹 코디네이터컨슈머 그룹이 구독한 토픽의 파티션들과 그룹의 멤버들을 트래킹 스태틱 멤버십(Static Membership)컨슈머 그룹 내에서 컨슈머가 재시작 등으로 컨슈머 그룹에서 나갔다가 다시 합류하더라도 리밸런싱이 일어나지 않게 하는 기능group.instance.id값을 컨슈머를 식별하기 위한 고유값을 입력default : null스태틱 멤버십 또한 session.timeout.ms 시간을 넘어갈..
2024.09.02 -
Listener Error Handlers@KafkaListener의 attribute -> errorHandlerKafkaListenerErrorHandler 인터페이스를 구현@KafkaListener(topics = "test.topic", errorHandler = "testListenerErrorHandler")public void test(@Payload Param param) { // ....}@Componentpublic class TestListenerErrorHandler implements KafkaListenerErrorHandler { @Override public Object handleError(Message message, ListenerExecutionFail..
[Kafka] Spring Kafka - handling exception(KafkaListenerErrorHandler, DefaultErrorHandler)Listener Error Handlers@KafkaListener의 attribute -> errorHandlerKafkaListenerErrorHandler 인터페이스를 구현@KafkaListener(topics = "test.topic", errorHandler = "testListenerErrorHandler")public void test(@Payload Param param) { // ....}@Componentpublic class TestListenerErrorHandler implements KafkaListenerErrorHandler { @Override public Object handleError(Message message, ListenerExecutionFail..
2024.08.17 -
Producer 주요 옵션OptionDescriptionbootstrap.servers카프카 클러스터는 클러스터 마스터라는 개념이 없으므로, 클러스터 내 모든 서버가 클라이언트의 요청을 받을 수 있음. 클라이언트가 카프카 클러스터에 처음 연결하기 위한 호스트와 포트정보client.dns.lookup하나의 호스트에 여러 IP를 매핑해 사용하는 일부 환경에서 클라이언트가 하나의 IP와 연결하지 못할 경우에 다른 IP로 시도하는 설정.use_all_dns_ips 기본값- DNS에 할당된 호스트의 모든 IP를 쿼리하고 저장. - 첫 번째 IP로 접근 실패 시, 종료하지 않고 다음 IP로 접근 시도. resolve_canonical_bootstrap_servers_only - Kerberos 환경에서 FQDN을 ..
[Kafka] Producer&Consumer 주요 옵션Producer 주요 옵션OptionDescriptionbootstrap.servers카프카 클러스터는 클러스터 마스터라는 개념이 없으므로, 클러스터 내 모든 서버가 클라이언트의 요청을 받을 수 있음. 클라이언트가 카프카 클러스터에 처음 연결하기 위한 호스트와 포트정보client.dns.lookup하나의 호스트에 여러 IP를 매핑해 사용하는 일부 환경에서 클라이언트가 하나의 IP와 연결하지 못할 경우에 다른 IP로 시도하는 설정.use_all_dns_ips 기본값- DNS에 할당된 호스트의 모든 IP를 쿼리하고 저장. - 첫 번째 IP로 접근 실패 시, 종료하지 않고 다음 IP로 접근 시도. resolve_canonical_bootstrap_servers_only - Kerberos 환경에서 FQDN을 ..
2024.08.08 -
kafka message queue를 service 사이의 메시지 전송의 매개체로 사용하는 경우각 서비스들에서 메시지를 produce, consume 하는 dto class가 다를 수 있다. 이러한 경우에 어떻게 spring-kafka 설정을 가져가야 하는지 알아보도록 하자. 기본 kafka 설정 spring: kafka: producer: value-serializer: org.springframework.kafka.support.serializer.JsonSerializer consumer: value-deserializer: org.springframework.kafka.support.serializer.JsonDeserializer 보통은 위와 같이 어떠한 종류의 s..
[Kafka] Serializer, Deserializerkafka message queue를 service 사이의 메시지 전송의 매개체로 사용하는 경우각 서비스들에서 메시지를 produce, consume 하는 dto class가 다를 수 있다. 이러한 경우에 어떻게 spring-kafka 설정을 가져가야 하는지 알아보도록 하자. 기본 kafka 설정 spring: kafka: producer: value-serializer: org.springframework.kafka.support.serializer.JsonSerializer consumer: value-deserializer: org.springframework.kafka.support.serializer.JsonDeserializer 보통은 위와 같이 어떠한 종류의 s..
2024.06.26