X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=transfer%2Fsrc%2Fmain%2Fjava%2Fde%2Fjuplo%2Fkafka%2Fpayment%2Ftransfer%2FTransferService.java;h=9e72af163c9f2b21caa226ce256e6b6d7a9c98e5;hb=372ec491e12f53364b792d3fa34586ce1f3e4910;hp=9da09a91d3967db54c49f06ee9d38638a13e33dc;hpb=178ce6ffc044415eb00f250aed2f9b1999bd47d1;p=demos%2Fkafka%2Fdemos-kafka-payment-system-transfer diff --git a/transfer/src/main/java/de/juplo/kafka/payment/transfer/TransferService.java b/transfer/src/main/java/de/juplo/kafka/payment/transfer/TransferService.java index 9da09a9..9e72af1 100644 --- a/transfer/src/main/java/de/juplo/kafka/payment/transfer/TransferService.java +++ b/transfer/src/main/java/de/juplo/kafka/payment/transfer/TransferService.java @@ -1,11 +1,7 @@ package de.juplo.kafka.payment.transfer; -import de.trion.microservices.avro.Order; -import de.trion.microservices.avro.OrderState; -import java.net.URI; -import java.util.UUID; -import javax.validation.Valid; +import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.kafka.clients.producer.KafkaProducer; import org.apache.kafka.clients.producer.ProducerRecord; import org.slf4j.Logger; @@ -17,62 +13,60 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.context.request.async.DeferredResult; +import javax.validation.Valid; +import java.net.URI; +import java.util.UUID; + @RestController public class TransferService { private final static Logger LOG = LoggerFactory.getLogger(TransferService.class); - private final KafkaProducer producer; + private final KafkaProducer producer; + private final ObjectMapper mapper; private final String topic; private final String path; TransferService( - final KafkaProducer producer, + final KafkaProducer producer, + final ObjectMapper mapper, final TransferServiceProperties properties) { this.producer = producer; + this.mapper = mapper; this.topic = properties.getTopic(); this.path = properties.getPath(); } @PostMapping( - path = "/orders", - consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, + path = "/transfer", + consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.TEXT_PLAIN_VALUE) - public DeferredResult> placeOrder(@Valid @RequestBody OrderBean order) + public DeferredResult> transfer(@Valid @RequestBody Transfer transfer) { DeferredResult> result = new DeferredResult<>(); try { - UUID uuid = UUID.randomUUID(); - ProducerRecord record = + ProducerRecord record = new ProducerRecord<>( - topic, - uuid, - Order - .newBuilder() - .setId(uuid.toString()) - .setState(OrderState.CREATED) - .setCustomerId(order.getCustomerId()) - .setOrderId(order.getId()) - .setProductId(order.getProductId()) - .setQuantity(order.getQuantity()) - .build()); + topic, + transfer.getId(), + mapper.writeValueAsString(transfer)); producer.send(record, (metadata, exception) -> { if (exception != null) { - LOG.error("Could not place order {}: {}", order, exception.toString()); + LOG.error("Could not place order {}: {}", transfer, exception.toString()); result.setErrorResult(exception); return; } - result.setResult(ResponseEntity.created(URI.create(path + uuid)).build()); + result.setResult(ResponseEntity.created(URI.create(path + transfer.getId())).build()); }); } catch (Exception e)