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

hungryo님의 프로필 이미지
hungryo

작성한 질문수

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

Orders Microservice 수정 - Order Kafka Producer

KafkaProducer와 OrderProducer 차이

작성

·

269

1

안녕하세요.

Producer 구조 관련해서 문의드립니다.

어디선가 이해를 못하고 있는건지...

order-service에서 catalogs-service 호출할때 

KafkaProducer를 만들어서 send할때 그냥 topic, orderDto만 jsonString 형식으로 보냈는데

왜 OrderProducer에서는 스키마, 필드 등 형식을 만들어서 send하는지요?

둘다 Topic에 전달하는건 같고...

차이점은 다른 서비스에 전송(catalogs-service)하냐 자신(order-service)에게 전송하냐 차이가 보이는데  결국 Topic에 전송하는거라.. 같은게 아닌가 합니다.

 

 

답변 2

3

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

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

KafkaProducer와 OrderProducer는 사용용도가 다릅니다. 먼저, order-service에서의 KafkaProducer는 catalog-service에게 주문 내역을 전달하기 위해서 사용했습니다. 단순히 제품ID, 수량, 가격 등의 정보를 Json으로 전달하였습니다. 해당 메시지를 토픽으로부터 받게 되는 catalog-service에서도 Json 데이터에 저장된 제품ID, 수랴, 가격 등의 정보를 해석해서 자신의 DB에 업데이트 했습니다. 반면에, OrderProduce의 용도의 다른 order-service간의 데이터 동기화를 위해 사용했습니다. 여러 order-service가 존재할 경우, 각각의 DB를 사용하면 주문에 대한 동기화가 이뤄지지 않기 때문에, 이러한 데이터 동기화를 위해 사용하고 있습니다. 이를 위해 Topic에 주문 정보를 저장하면, 자동으로 DB에 반영해 줄 수 있도록 Kafka Connect도 설정하였습니다. Topic에 저장된 메시지가 자동으로 DB에 저장되기 위해서는 DB가 읽을 수 있는 데이터 형식이어야 하는데, 이를 위해 Payload에 주문 정보를 저장하여 토픽에 보냈습니다. Kafka Connect는 Payload의 값을 해석하여 해당 DB에 주문 정보를 업데이트하게 됩니다. 

감사합니다. 

0

hungryo님의 프로필 이미지
hungryo
질문자

앗 유레카~! 

 

감사합니다~!

hungryo님의 프로필 이미지
hungryo

작성한 질문수

질문하기