-
크게 pub 브로커 sub 으로 구성된다.
pub 시점에 시리얼라이즈를 통해 key와 value를 보낸다.
이를 브로커가 적절한 양을 판단 후 sub(컨슈머) 그룹에 보내게 된다. (key 단위 )
sub의 경우 batch로 받을 지 single로 받을지 판단할 수 있다.
pub 주요 config
ProducerConfig.COMPRESSION_TYPE_CONFIG - 압축유형 ProducerConfig.LINGER_MS_CONFIG - pub 대기 시간 ProducerConfig.MAX_REQUEST_SIZE_CONFIG -pub max 용량 ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG - key 시리얼라이즈 ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG - value 시리얼라이즈
저의 경우 KafkaTemplate을 이용했으며 해당 template을 통해 send를 할 경우 callback을 통해 성공여부를 확인이 가능하다 .
해당 구조를 통해 실패 시 해당 value를 별도 테이블에 등록하여 재발행이 가능한 구조도 설계할 수 있다.
private void failureCallback(String topic ,T value, Throwable exception) { recordInterfaceHistory(topic, value,null, exception); }
sub 주요 config
ConsumerConfig.AUTO_OFFSET_RESET_CONFIG 파티션 재분배 시 어떤 데이터부터 분배를 할건지 ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG commit을 자동 or 수동 어떤걸로 할건지 ConsumerConfig.MAX_PARTITION_FETCH_BYTES_CONFIG sub max 용량 ConsumerConfig.MAX_POLL_RECORDS_CONFIG record를 몇개씩 poll 할건지
retry
private RetryTemplate retryTemplate() { RetryTemplate k = new RetryTemplate(); k.setBackOffPolicy(BackOff기간); k.setRetryPolicy(몇번 재시도할지); }