작성
·
269
1
안녕하세요.
Producer 구조 관련해서 문의드립니다.
어디선가 이해를 못하고 있는건지...
order-service에서 catalogs-service 호출할때
KafkaProducer를 만들어서 send할때 그냥 topic, orderDto만 jsonString 형식으로 보냈는데
왜 OrderProducer에서는 스키마, 필드 등 형식을 만들어서 send하는지요?
둘다 Topic에 전달하는건 같고...
차이점은 다른 서비스에 전송(catalogs-service)하냐 자신(order-service)에게 전송하냐 차이가 보이는데 결국 Topic에 전송하는거라.. 같은게 아닌가 합니다.
답변 2
3
안녕하세요, 이도원입니다.
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