KafkaTransactionManager ( 카프카 트랜잭션 처리 )스프링 부트에서 트랜잭션을 사용하기 위해서는 단순히 spring.kafka.producer.transaction-id-prefix값을 설정하기만 하면 된다. (application.yml 혹은 KafkaProducerConfig에 설정)스프링 부트에서는 자동적으로 KafkaTransactionManager bean을 구성하고 listener 컨테이너를 연결한다.@Beanpublic ProducerFactory producerFactory() { ... DefaultKafkaProducerFactory factory = new DefaultKafkaProducerFactory(props); factory.setTransa..
분산 트랜잭션
이벤트 발행을 보장하는 방법Event Driven Architecture 에서의 이벤트 발행을 보장하는 방법은 여러가지 있다.MSA로 설계된 분산시스템 에서는 데이터의 일관성을 유지 하는것은 매우 중요하다.아웃박스 패턴은 서비스 간의 데이터를 최소 한번 이상 전달하여두 서비스 간의 데이터의 정합성을 목표로 한다.멱등성최소 한번 이상 전달 하더라도 데이터가 동일 해야 한다. 위 말을 들으면 멱등성 이라는 것이 떠오를 것이다.그러므로 데이터가 중복 처리 되더라도 같은 결과를 얻을 수 있게멱등성을 고려하는 것이 중요하다. 목표 - 데이터의 일관성 메시지 손실 방지: 아웃박스 패턴은 로컬 트랜잭션을 통해 작업의 원자성을 보장하고 이벤트를 데이터 베이스에 저장하여, 전송 과정에서 발생..