From d56fe4a32c3e5b6507696f2c549e59881fbe1960 Mon Sep 17 00:00:00 2001 From: kimscott Date: Tue, 12 Nov 2019 15:53:54 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9D=B4=EB=B2=A4=ED=8A=B8=20order=20=EC=9D=B4?= =?UTF-8?q?=EB=B2=A4=ED=8A=B8=20=ED=95=B8=EB=93=A4=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...uctChanged.groovy => productChanged.groovy | 1 - .../com/example/template/AbstractEvent.java | 23 +++++- .../java/com/example/template/Product.java | 30 +------- .../com/example/template/ProductChanged.java | 72 +++++++++++-------- .../com/example/template/MessagingBase.java | 24 +++---- 5 files changed, 76 insertions(+), 74 deletions(-) rename src/test/resources/contracts/messaging/productChanged.groovy => productChanged.groovy (99%) diff --git a/src/test/resources/contracts/messaging/productChanged.groovy b/productChanged.groovy similarity index 99% rename from src/test/resources/contracts/messaging/productChanged.groovy rename to productChanged.groovy index 4940d4b..7717049 100644 --- a/src/test/resources/contracts/messaging/productChanged.groovy +++ b/productChanged.groovy @@ -1,5 +1,4 @@ package contracts.messaging -// org.springframework.cloud.contract.spec.Contract.make { description(""" spring contract 에서 메세지를 받는 방식은 총 3가지인데, diff --git a/src/main/java/com/example/template/AbstractEvent.java b/src/main/java/com/example/template/AbstractEvent.java index 1ad382f..a1a481a 100644 --- a/src/main/java/com/example/template/AbstractEvent.java +++ b/src/main/java/com/example/template/AbstractEvent.java @@ -1,6 +1,14 @@ package com.example.template; -import org.springframework.stereotype.Service; +import com.example.template.config.kafka.KafkaProcessor; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.messaging.MessageChannel; +import org.springframework.messaging.MessageHeaders; +import org.springframework.messaging.support.MessageBuilder; +import org.springframework.util.MimeTypeUtils; + +import javax.persistence.Entity; public class AbstractEvent { @@ -23,4 +31,17 @@ public class AbstractEvent { this.timestamp = timestamp; } + public String toJson(){ + ObjectMapper objectMapper = new ObjectMapper(); + String json = null; + + try { + json = objectMapper.writeValueAsString(this); + } catch (JsonProcessingException e) { + throw new RuntimeException("JSON format exception", e); + } + + return json; + } + } diff --git a/src/main/java/com/example/template/Product.java b/src/main/java/com/example/template/Product.java index 12296e5..c9d3931 100644 --- a/src/main/java/com/example/template/Product.java +++ b/src/main/java/com/example/template/Product.java @@ -1,13 +1,6 @@ package com.example.template; import com.example.template.config.kafka.KafkaProcessor; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import org.apache.kafka.clients.producer.ProducerRecord; -import org.springframework.beans.BeanUtils; -import org.springframework.cloud.stream.messaging.Processor; -import org.springframework.core.env.Environment; -import org.springframework.kafka.core.KafkaTemplate; import org.springframework.messaging.MessageChannel; import org.springframework.messaging.MessageHeaders; import org.springframework.messaging.support.MessageBuilder; @@ -29,30 +22,11 @@ public class Product { @PostPersist @PostUpdate private void publishStart() { - ObjectMapper objectMapper = new ObjectMapper(); - String json = null; - ProductChanged productChanged = new ProductChanged(); - productChanged.setProductId(this.id); -// productChanged.setProductTitle(this.name); - productChanged.setProductName(this.name); - productChanged.setProductPrice(this.price); - productChanged.setProductStock(this.stock); - productChanged.setImageUrl(this.imageUrl); - try { - json = objectMapper.writeValueAsString(productChanged); - } catch (JsonProcessingException e) { - throw new RuntimeException("JSON format exception", e); - } + ProductChanged productChanged = new ProductChanged(this); + String json = productChanged.toJson(); if( json != null ){ - /** - * spring kafka 방식 - */ -// Environment env = Application.applicationContext.getEnvironment(); -// String topicName = env.getProperty("eventTopic"); -// ProducerRecord producerRecord = new ProducerRecord<>(topicName, json); -// kafkaTemplate.send(producerRecord); /** * spring streams 방식 diff --git a/src/main/java/com/example/template/ProductChanged.java b/src/main/java/com/example/template/ProductChanged.java index b46d312..a890c40 100644 --- a/src/main/java/com/example/template/ProductChanged.java +++ b/src/main/java/com/example/template/ProductChanged.java @@ -1,18 +1,40 @@ package com.example.template; +import com.example.template.config.kafka.KafkaProcessor; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.messaging.MessageChannel; +import org.springframework.messaging.MessageHeaders; +import org.springframework.messaging.support.MessageBuilder; +import org.springframework.util.MimeTypeUtils; + import java.text.SimpleDateFormat; import java.util.Date; -public class ProductChanged extends AbstractEvent{ +public class ProductChanged extends AbstractEvent{ private String stateMessage = "상품 변경이 발생함"; private Long productId; - -// private String productTitle; private String productName; private int productPrice; - private int productStock; + +// private int productStock; +// public int getProductStock() { +// return productStock; +// } +// public void setProductStock(int productStock) { +// this.productStock = productStock; +// } + + private int stock; + public int getStock() { + return stock; + } + public void setStock(int stock) { + this.stock = stock; + } + private String imageUrl; public ProductChanged(){ @@ -21,6 +43,23 @@ public class ProductChanged extends AbstractEvent{ this.timestamp = defaultSimpleDateFormat.format(new Date()); } + public ProductChanged(Product product){ + this(); + this.setProductId(product.getId()); + this.setProductName(product.getName()); + this.setProductPrice(product.getPrice()); +// this.setProductStock(product.getStock()); + this.setStock(product.getStock()); + this.setImageUrl(product.getImageUrl()); + } + + public Long getProductId() { + return productId; + } + public void setProductId(Long productId) { + this.productId = productId; + } + public String getStateMessage() { return stateMessage; } @@ -29,22 +68,6 @@ public class ProductChanged extends AbstractEvent{ this.stateMessage = stateMessage; } - public Long getProductId() { - return productId; - } - - public void setProductId(Long productId) { - this.productId = productId; - } - -// public String getProductTitle() { -// return productTitle; -// } -// -// public void setProductTitle(String productTitle) { -// this.productTitle = productTitle; -// } - public String getProductName() { return productName; } @@ -61,14 +84,6 @@ public class ProductChanged extends AbstractEvent{ this.productPrice = productPrice; } - public int getProductStock() { - return productStock; - } - - public void setProductStock(int productStock) { - this.productStock = productStock; - } - public String getImageUrl() { return imageUrl; } @@ -76,4 +91,5 @@ public class ProductChanged extends AbstractEvent{ public void setImageUrl(String imageUrl) { this.imageUrl = imageUrl; } + } diff --git a/src/test/java/com/example/template/MessagingBase.java b/src/test/java/com/example/template/MessagingBase.java index a600c90..4c1a06f 100644 --- a/src/test/java/com/example/template/MessagingBase.java +++ b/src/test/java/com/example/template/MessagingBase.java @@ -41,25 +41,17 @@ public abstract class MessagingBase { public void productChanged() { - ObjectMapper objectMapper = new ObjectMapper(); - String json = null; + Product product = new Product(); + product.setId(1L); + product.setName("TEST"); + product.setPrice(10000); + product.setStock(10); + product.setImageUrl("/test.jpg"); - // TODO json 으로 변경 - ProductChanged productChanged = new ProductChanged(); - productChanged.setProductId(1L); -// productChanged.setProductTitle("TEST"); - productChanged.setProductName("TEST"); - productChanged.setProductPrice(10000); - productChanged.setProductStock(10); - productChanged.setImageUrl("/test.jpg"); - try { - json = objectMapper.writeValueAsString(productChanged); - } catch (JsonProcessingException e) { - throw new RuntimeException("JSON format exception", e); - } + ProductChanged productChanged = new ProductChanged(product); + String json = productChanged.toJson(); System.out.println("test output Topic = " + kafkaProcessor.outboundTopic().toString()); - this.messaging.send(MessageBuilder .withPayload(json) .setHeader(MessageHeaders.CONTENT_TYPE, MimeTypeUtils.APPLICATION_JSON)