카프카예제 3

[실습] Kafka CDC 트랜잭션을 이용한 Pub/sub 예제

트랜잭션을 활용하여 CDC 를 처리하려고 합니다.트랜잭션을 잘 사용하면 데이터 처리에 용이하지만 트랜잭션의 묶여있는 순서에 따라 결과가 달라질 수 있으니잘 보고 사용해야합니다.1. @RestController 생성    MyController에서 앞으로 url 호출 예정 (post: /message/f 호출)2. Service 설정3. ServiceImpl 설정MyModel 객체를 받아 이를 JPA가 처리할 수 있는 MyEntity 객체로 변환합니다.변환된 MyEntity 객체를 JPA 저장소에 저장합니다.저장된 결과를 다시 MyModel로 변환한 후 반환합니다. (kafka로 보낼 것) 단, 위와 같이 throw 를 제일 아래에 작성해 주었을 경우는 결과가 달라진다.트랜잭션으로 묶은 이유는 에러 발생 ..

인프라/Kafaka 2024.12.12

[실습] Kafka 객체를 JSON 문자열로 직렬화 구현

writeValueAsString는 JSON 문자열로 데이터를 직렬화하는 매우 편리한 메서드입니다. Kafka 메시지, REST API 응답 데이터, 로그 데이터 등 JSON 형식이 필요한 모든 곳에서 사용할 수 있습니다.  1. @RestController 생성    MyController에서 앞으로 url 호출 예정 (post: /message/c 호출) 2. Producer 설정 3.Consumer  4.config컨슈머에서 한번에 받기 위해서는 consumer 셋팅에 배치 리스너 설정 값을 변경 해줘야 한다.factory.setBatchListener(true);  5. 결과

인프라/Kafaka 2024.12.11

[실습] Kafka 배치 메세지 리스너 pub/sub 단순 구현

배치 메세지 리스너 구현 실습 내용이다.배치 메세지 리스너를 구현하고 한번에 메세지가 처리된다고 했는데 왜 컨슈머에서 메세지가 쪼개지지? 하고 의문이 들었었다. Kafka에서 배치 리스너를 사용하는 경우에도, Kafka의 기본 동작인 파티셔닝은 여전히 적용됩니다. 배치 리스너가 메시지를 처리할 때, 여러 파티션에서 가져온 메시지를 한 번에 전달받을 수 있습니다.  위와 같이 배치 리스너라고 해도 파티셔닝 기본 동작은 유지한 채로 읽어온다고 한다.결국 전체 메세지를 컨슈머에서 다 소비하긴 한다.  1. @RestController 생성    MyController에서 앞으로 url 호출 예정 (post: /message/b 호출) 얘는 메세지만 한번에 받는 것 테스트 하느라 호출만 하면 처리 된다. 2. ..

인프라/Kafaka 2024.12.11