190.8. Kafka 소비자에서 수동 커밋 사용
Camel 2.21로 사용 가능
기본적으로 Kafka 소비자는 자동 커밋을 사용합니다. 여기서 오프셋은 지정된 간격을 사용하여 백그라운드에서 자동으로 커밋됩니다.
수동 커밋을 강제 적용하려면 메시지 헤더에 저장된 Camel Exchange에서 KafkaManualCommit API를 사용할 수 있습니다. 이를 위해서는 KafkaComponent 또는 끝점에서 allowManualCommit 를 true 로 설정하여 수동 커밋을 켜야 합니다. 예를 들면 다음과 같습니다.
KafkaComponent kafka = new KafkaComponent();
kafka.setAllowManualCommit(true);
...
camelContext.addComponent("kafka", kafka);
그런 다음 Camel Processor 와 같은 Java 코드에서 KafkaManualCommit 를 사용할 수 있습니다.
public void process(Exchange exchange) {
KafkaManualCommit manual =
exchange.getIn().getHeader(KafkaConstants.MANUAL_COMMIT, KafkaManualCommit.class);
manual.commitSync();
}그러면 Kafka에서 커밋이 승인되거나 예외가 발생할 때까지 차단할 동기 커밋이 강제 수행됩니다.
KafkaManualCommit 의 사용자 지정 구현을 사용하려면 KafkaComponent 에서 사용자 지정 구현 인스턴스를 생성하는 사용자 지정 KafkaManualCommitFactory 를 구성할 수 있습니다.