본문 바로가기

Kafka

[Kafka] Spring Kafka commit (5)

리스너 타입

  1. 레코드 리스너(MessageListener)
    • 단 1개의 레코드 처리
    • 스프링 카프카 컨슈머의 기본 리스너 타입
  2. 배치 리스너(BatchMessageListener)
    • 한 번에 여러 개의 레코드 처리

 

Acknowledging 이 붙은 리스너

  • Manual Commit 을 사용하는 경우 (AcksMode: MANUAL, MANUAL_IMMEDIATE)

ConsumerAware 가 붙은 리스너

  • KafkaConsumer 인스턴스에 직접 접근하여 컨트롤하고 싶을 때

 

 


 

 

RecordListener - Record 인스턴스 단위로 프로세싱

Listener 생성 메서드 파라미터 Desc
MessageListener onMessage(ConsumerRecord<K, V> data)

onMessage(V data)
오토 커밋 또는 컨슈머 컨테이너의 AckMode를 사용하는 경우
AcknowledgingMessageListener onMessage(ConsumerRecord<K, V> data, Acknowledgment acknowledgment)

onMessage(V data, Acknowledgment acknowledgment)
매뉴얼 커밋을 사용하는 경우
ConsumerAwareMessageListener onMessage(ConsumerRecord<K, V> data, Consumer<K, V> consumer)

onMessage(V data, Consumer<K, V> consumer)
컨슈머 객체를 활용하고 싶은 경우
AcknowledgingConsumerAwareMessageListener onMessage(ConsumerRecord<K, V> data, Acknowledgment acknowledgment, Consumer<?, ?> consumer)

onMessage(V data, Acknowledgment acknowledgment, Consumer<K, V> consumer)
매뉴얼 커밋을 사용하고 컨슈머 객체를 활용하고 싶은 경우

 

 

BatchListener - Records 인스턴스 단위로 프로세싱

Listener 생성 메서드 파라미터 Desc
BatchMessageListener onMessage(ConsumerRecords<K, V> data)

onMessage(List<V> data)
오토 커밋이나 컨슈머 컨테이너의 AckMode를 사용하는 경우
BatchAcknowledgingMessageListener onMessage(ConsumerRecords<K, V> data, Acknowledgment acknowledgment)

onMessage(List<V> data, Acknowledgment acknowledgment)
매뉴얼 커밋을 사용하는 경우
BatchConsumerAwareMessageListener onMessage(ConsumerRecords<K, V> data, Consumer<K, V> consumer)

onMessage(List<V> data, Consumer<K, V> consumer)
컨슈머 객체를 활용하고 싶은 경우
BatchAcknowledgingConsumerAwareMessageListener onMessage(ConsumerRecords<K, V> data, Acknowledgment acknowledgment, Consumer<K, V> consumer)

onMessage(List<V> data, Acknowledgment acknowledgment, Consumer<K, V> consumer)
매뉴얼 커밋을 사용하고 컨슈머 객체를 활용하고 싶은 경우

'Kafka' 카테고리의 다른 글