-
2023.10.22 kafka transactionTIL 2023. 10. 21. 22:03
ALO 트랜잭션 아웃 박스
EO
AMO
ENABLE_IDEMPOTENCE_CONFIG
https://yangbongsoo.tistory.com/132
EDA 에서 Event 중복 발행(동시성 이슈)
먼저 spring application 서버는 kafka 메세지를 consuming 하고 producing 하는것을 반복하는 구조다. 왜 Event 가 중복 발행됐는지를 이해하려면, Kafka 이벤트 발행과 DB 저장(redis) 트랜잭션 을 이해해야 한다
yangbongsoo.tistory.com
https://yangbongsoo.tistory.com/77
kafka transaction(exactly once semantic)
kafka transaction 설명에 앞서 kafka 통신을 위한 기본적인 코드부터 설명하려 한다. 테스트 코드에서 EmbeddedKafkaBroker 를 활용해 broker 역할을 대신했다. 그리고 json 데이터를 보내기 위해 objectMapper 를
yangbongsoo.tistory.com
https://dhkdn9192.github.io/apache-kafka/kakfa-exactly-once-delivery/
Kafka’s exactly-once delivery
Kafka에서 메시지를 중복이나 누락 없이 순서대로 전달되도록 보증하려면 어떻게 해야할까?
dhkdn9192.github.io
카프카 트랜잭션을 하려면
producer는 transaction id 설정과 멱등성을 보장하는 idempotence을 설정해놓아야하고
consumer는 isolation.level을 read committed로 해놓아야한다.
개념적으로 보면 프로듀서가 transaction을 시작하고 커밋을 해야 컨슈머가 읽는다는 것이다.
기본적으로 consumer는 read uncommitted이다.
producer는 transaction을 사용한다고 선언했으면 spring transaction annotion안에서 메시지를 발행해야한다.
producer가 commit을 하지 않았다면 consumer는 메시지를 소비하지 못해서 lag이 증가한다
'TIL' 카테고리의 다른 글
2023.10.28 spring security ip (0) 2023.10.28 2023.10.25 multi tenancy pk (0) 2023.10.25 2023.10.15 기록장 (0) 2023.10.15 2023.09.27 기록장 (0) 2023.09.27 2023.09.23 기록장 (0) 2023.09.22