diff --git a/src/main/java/pl/adaptiveapps/serviceexternalserver/controller/OrderCreatedController.java b/src/main/java/pl/adaptiveapps/serviceexternalserver/controller/OrderCreatedController.java new file mode 100644 index 0000000..238d767 --- /dev/null +++ b/src/main/java/pl/adaptiveapps/serviceexternalserver/controller/OrderCreatedController.java @@ -0,0 +1,26 @@ +package pl.adaptiveapps.serviceexternalserver.controller; + +import com.google.gson.Gson; +import lombok.RequiredArgsConstructor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; +import pl.adaptiveapps.service.kafkamodel.msg.external.ordercreated.OrderCreatedMsg; +import pl.adaptiveapps.serviceexternalserver.kafka.NotesProducer; +import pl.adaptiveapps.serviceexternalserver.kafka.OrderCreatedProducer; + +@RequiredArgsConstructor +@RestController +public class OrderCreatedController { + + private final OrderCreatedProducer orderCreatedProducer; + private static final Logger logger = LoggerFactory.getLogger(OrderCreatedController.class); + + @PostMapping("/order-created") + public void postNote(@RequestBody OrderCreatedMsg orderCreatedMsg){ + logger.info("Receive order: {}", new Gson().toJson(orderCreatedMsg)); + orderCreatedProducer.sendMessage(orderCreatedMsg); + } +} diff --git a/src/main/java/pl/adaptiveapps/serviceexternalserver/kafka/OrderCreatedProducer.java b/src/main/java/pl/adaptiveapps/serviceexternalserver/kafka/OrderCreatedProducer.java new file mode 100644 index 0000000..b36b8db --- /dev/null +++ b/src/main/java/pl/adaptiveapps/serviceexternalserver/kafka/OrderCreatedProducer.java @@ -0,0 +1,31 @@ +package pl.adaptiveapps.serviceexternalserver.kafka; + +import com.google.gson.Gson; +import lombok.RequiredArgsConstructor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.kafka.core.KafkaTemplate; +import org.springframework.stereotype.Service; +import pl.adaptiveapps.service.kafkamodel.common.KafkaTopic; +import pl.adaptiveapps.service.kafkamodel.msg.external.NoteSavedMsg; +import pl.adaptiveapps.service.kafkamodel.msg.external.ordercreated.OrderCreatedMsg; + +import java.util.concurrent.ExecutionException; + +@Service +@RequiredArgsConstructor +public class OrderCreatedProducer { + private static final Logger logger = LoggerFactory.getLogger(OrderCreatedProducer.class); + + private final KafkaTemplate kafkaTemplate; + + public void sendMessage(OrderCreatedMsg orderCreatedMsg) { + try { + String message = new Gson().toJson(orderCreatedMsg); + var res = this.kafkaTemplate.send(KafkaTopic.ORDER_CREATED, message).get(); + logger.info(String.format("#### -> orderCreatedMsg message sent -> %s", res.getRecordMetadata().topic())); + } catch (InterruptedException | ExecutionException e) { + logger.error(e.getMessage(), e); + } + } +}