강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

lulala님의 프로필 이미지
lulala

작성한 질문수

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

Kafka Sink Connect 사용

delete 명령은 토픽에

작성

·

216

0

delete명령같은것은 반영을 못하나요?

데이터가 토픽저장되어 쌓이는것을 실습해봤습니다.

source 데이터를 delete를 하면 어떻게 되는지 해봤는데 토픽에 값이 전달이 안되더군요(데이터 저장이 아니니까 당연한건가..)

카프카를 사용해서 taget데이터를 삭제하는 방법이 따로있는것인가요?

답변 1

1

Dowon Lee님의 프로필 이미지
Dowon Lee
지식공유자

안녕하세요, 이도원입니다. 

기본적으로 Kafka는 메시지를 추가하는 역할로 사용하시는게 맞습니다. Event Soucring과 CQRS와 같은 데이터 동기화 패턴에서는 rollback 처리를 구현하기 위해 Kafka를 사용하여, 추가 뿐만 아니라, 삭제나 변경이력과 같은 모든 사항을 기록하는 용도로써 Kafka를 사용할 수 있습니다.

Source의 데이터를 변경하는 작업에 대해서는 Topic에 전달되도록 Connector를 구성하지 않았기 때문에, 반영이 되지 않았습니다. 수정 작업을 위해서는 mode를 timestamp로 설정해서 사용해서 구성하셔야 합니다. (아래 Source Connector 참조)

{
"name" : "my-source-connect-2",
"config" : {
"connector.class" : "io.confluent.connect.jdbc.JdbcSourceConnector",
"connection.url":"jdbc:mysql://localhost:3306/mydb",
"connection.user":"root",
"connection.password":"test1357",
"mode": "timestamp+incrementing",
"timestamp.column.name" : "modified_at",
"incremental.column.name" : "id",
"validate.non.null": false,
"table.whitelist":"users",
"topic.prefix" : "my_topic_2_",
"tasks.max" : "1"
}
}

또한, Kafka Conenct를 통해 Target 데이터를 삭제하기 위해서는 delete.enabled=true 옵션을 추가하신 다음 기본키를 바탕으로 삭제하실 수 있다고 공식 문서에 나와 있기는 하지만, Kafka Connect에서 DB를 제어하는 것 보다는 Topic에서 해당 메시지를 삭제하는 것이 좋을 것 같습니다.

감사합니다. 

lulala님의 프로필 이미지
lulala

작성한 질문수

질문하기