인프라/Kafaka

[실습] Kafka CDC 이벤트를 이용한 Pub/sub 예제

물에서육지로 2024. 12. 12. 15:12

이벤트 발생에 따른 CDC 를 처리하려고 합니다.


1. @RestController 생성

    MyController에서 앞으로 url 호출 예정 (post: /message/g 호출)

2. Service 설정

3. ServiceImpl 설정

  • MyModel 객체를 받아 이를 JPA가 처리할 수 있는 MyEntity 객체로 변환합니다.
  • 변환된 MyEntity 객체를 JPA 저장소에 저장합니다.
  • 저장된 결과를 다시 MyModel로 변환한 후 반환합니다. (kafka로 보낼 것)

<이벤트 처리>

 

트랜잭션과 비슷하게 이벤트로 처리할 경우

카프카로 메세지 보내기전에 오류가 발생할 경우 데이터는 커밋되는데 메세지를 구현하지 못하는 문제가 발생한다.

이벤트 처리로 인한 것도 완벽한 CDC 구현이 될 수 없다.

 

4. Repository 설정

 

5. Producer 설정

 

6.Consumer

중첩 클래스는 하나의 클래스 안에 정의된 또 다른 클래스를 의미합니다. Java에서 중첩 클래스는 특정 클래스와 긴밀하게 관련된 클래스를 캡슐화하여 코드 구조를 더 깔끔하고 논리적으로 만들기 위해 사용됩니다.

위 코드에서 Payload는 MyCdcMessage 내부에 정의된 중첩 클래스입니다. 이는 Payload가 MyCdcMessage와 밀접하게 관련되어 있음을 나타냅니다.

 

 

7. 결과