회사에서 프로젝트를 하는 도중 카프카의 특정 토픽이 비어있는지 확인하는 메서드를 찾아봤는데, 팀원분께서 작성한 코드를 활용하니 특정 토픽이 비어있는지 확인할 수 있었다. AdminClient 클래스를 이용하면 작동중인 Consumer나 Producer의 작업에 영향을 미치지 않고 해당 정보를 얻을 수 있는데, 이에대해 코드를 좀 더 다듬어 포스팅 한다. package com.example; import org.apache.kafka.clients.admin.*; import org.apache.kafka.clients.consumer.OffsetAndMetadata; import org.apache.kafka.clients.producer.ProducerConfig; import org.apache.ka..
Kafka 버전 확인 명령어에 대해 찾아보니 다음과 같이 kafka의 버전을 찾을 수 있다는 것을 알게 되었다. $ cd [카프카 설치 폴더] $ find ./libs/ -name \*kafka_\* | head -1 | grep -o '\kafka[^\n]*' 2.7.0 버전인 것을 확인할 수 있따.
용어 설명 브로커 서버프로세스 클러스터 브로커 세트 토픽 로그 파티션을 가진 큐 오프셋 메시지 식별자 파티션 구조화된 커밋 로그에 지속적으로 추가되는 레코드의 정렬된 불변의 순서 프로듀서 토픽으로 데이터를 게시하는 것 컨슈머 전송받아 처리하는 것 주키퍼 조정자 보유기간 사용 가능한 메시지 상태로 유지하는 기간
bootstrap.servers 카프카 클러스터에 처음 연결을 하귀 위한 호스트와 포트 정보로 구성된 리스트 정보를 나타낸다. 정의된 포맷은 호스트명:포트, 호스트명:포트, 호스트명:포트 이다. fetch.min.bytes 한번에 가져올 수 있는 최소 데이터 사이즈 group.id 컨슈머가 속한 컨슈머 그룹을 식별하는 식별자 enable.auto.commit 백그라운드로 주기적으로 오프셋을 커밋합니다. auto.offset.reset 카프카에서 초기 오프셋이 없거나 현재 오프셋이 더 이상 존재하지 않은 경우에 다음 옵션으로 리셋합니다. earliest: 가장 초기의 오프셋값으로 설정합니다. latest : 가장 마지막의 오프셋값으로 설정합니다. none : 이전 오프셋값을 찾지 못하면 에러를 나타냅니다...
bootstrap.servers처음 연결을 하기 위한 호스트와 포트 정보로 구성된 리스트 정보를 나타냅니다. 정의된 포맷은 호스트이름 :포트,호스트이름:포트,호스트이름:포트 이다.호스트 하나만 입력해 사용할 수 있지만, 장애가 발생하는 경우 접속이 불가능하기에 클러스터에 있는 호스트를 모두 입력하는것을 권장한다. acks프로듀서가 카프카 토픽의 리더에게 메시지를 보낸 후 요청을 완료하기 전 ack(승인)의 수. 수가 크면 메시지 손실 가능성이 낮아지지만 속도가 줄어들고 수가 작으면 손실 가능성이 높아지지만 속도가 높아진다. acks=0프로듀서는 서버로 부터 어떠한 ack도 기다리지 않는다. asks=1리더는 데이터를 기록하지만, 모든 팔로워는 확인하지 않는다. 이 경우 데이터 손실이 발생가능하다. ack..
원인 java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/JsonNode 해결(dependency 추가) compile group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.8.8' compile group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: '2.8.8' compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.8.8'
처음 카프카를 실행하려고 하는데, 다음과 같은 에러가 났따.. SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 이러할 경우 다음의 Dependency를 추가한다. compile 'org.slf4j:slf4j-simple:1.7.30'
카프카에서 토픽을 만들려고 하는데 다음과 같은 에러가 발생하였다.. Error while executing topic command : Replication factor: 1 larger than available brokers: 0. [2020-09-26 09:15:41,654] ERROR org.apache.kafka.common.errors.InvalidReplicationFactorException: Replication factor: 1 larger than available brokers: 0. (kafka.admin.TopicCommand$) 토픽을 만들려는데 브로커가 없다는 의미인것 같은데 확인해보니 server.properties에 설정해 놓은zookeeper.connect에 설정된 경로..
일전에 Kafka를 공부하려다가 실패하였는데, 주된 원인은 책 중간중간에 주키퍼에 대한 얘기가 많이 나와서 뭔가 스트레스를 받았었다.(주키퍼를 하나도 몰랐기에..) 그래서, 주키퍼에 대한 책을 1독하고 나서 다시 카프카에 대한 책을 읽으니 뭔가 처음 설치하고 테스트 할 때 막힘이 없다. 카프카를 공부하려는 사람은 일단 주키퍼 기본서적을 1독하면 공부를 하는데 도움이 될 거라는 생각을 하게 된다. 카프카 공부의 목적 최근 카프카에 대한 공부를 시작하였는데 내가 주키퍼를 공부한 궁극적인 목표도 카프카를 공부하기 위함이었기에 1차적인 목표를 달성하였다는 점에서 일단 기쁘게 시작하고 있다. 왜 카프카를 공부하려고 하냐면 내가 속한 프로젝트에서 카프카를 쓰고 있는데, 이게 가운데서 뭔가 메시지 큐의 역할을 한다는..