From fbf8a45977e45f4a9c20b8727958e605fced2dc7 Mon Sep 17 00:00:00 2001 From: appleg Date: Sat, 2 Apr 2022 17:00:04 +0900 Subject: [PATCH] =?UTF-8?q?[220402]=20git=20=EC=B6=A9=EB=8F=8C=20=EC=A0=95?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 8 ---- .../java/com/example/cash/domain/Cash.java | 44 ------------------- .../com/example/PaymentCreatedListener.java | 14 ------ .../infra/kafka/PaymentCreatedListener.java | 24 ++++++++++ 4 files changed, 24 insertions(+), 66 deletions(-) delete mode 100644 payment-command/src/main/java/com/example/cash/domain/Cash.java delete mode 100644 payment-query/src/main/java/com/example/PaymentCreatedListener.java create mode 100644 payment-query/src/main/java/com/example/payment/infra/kafka/PaymentCreatedListener.java diff --git a/README.md b/README.md index 721ccc6..f94a205 100644 --- a/README.md +++ b/README.md @@ -83,14 +83,6 @@ CRUD 중에서 R 만을 담당하는 모듈이다. payment-command에서 발행 - Repository가 Controller에 직접 주입될 수 있다. 왜냐하면 DB 쿼리 외의 별다른 로직이 필요없기 때문이다. - 마찬가지 이유로 Response DTO도 사용하지 않는다. 이미 DB에 저장된 모든 정보가 Response에 최적화 시켜져 있기 때문이다. -#### Query Model의 모듈 특징 - -- Query 모델에서는 Consuming과 동시에 Query 모델에서 필요한 데이터로 가공한다고 가정한다. -- 그러므로 몇 가지 요소가 생략될 수 있다. - - Repository가 Controller에 직접 주입될 수 있다. 왜냐하면 DB 쿼리 외의 별다른 로직이 필요없기 때문이다. - - 마찬가지 이유로 Response DTO도 사용하지 않는다. 이미 DB에 저장된 모든 정보가 Response에 최적화 시켜져 있기 때문이다. - - diff --git a/payment-command/src/main/java/com/example/cash/domain/Cash.java b/payment-command/src/main/java/com/example/cash/domain/Cash.java deleted file mode 100644 index 71fa195..0000000 --- a/payment-command/src/main/java/com/example/cash/domain/Cash.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.example.cash.domain; - -import com.example.user.domain.User; -import jakarta.persistence.Entity; -import jakarta.persistence.Id; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.ManyToOne; -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.UUID; -import lombok.AccessLevel; -import lombok.AllArgsConstructor; -import lombok.NoArgsConstructor; -import org.springframework.data.annotation.CreatedDate; -import org.springframework.data.annotation.LastModifiedDate; - -@Entity -@NoArgsConstructor(access = AccessLevel.PROTECTED) -@AllArgsConstructor(access = AccessLevel.PRIVATE) -public class Cash { - - @Id - private String id; - - private BigDecimal amount; - - @ManyToOne - @JoinColumn - private User user; - - @CreatedDate - private LocalDateTime createdAt; - - @LastModifiedDate - private LocalDateTime updatedAt; - - public String getId() { - return id; - } - - public static Cash of(BigDecimal amount, User user) { - return new Cash(UUID.fromString("cash").toString(), amount, user, null, null); - } -} diff --git a/payment-query/src/main/java/com/example/PaymentCreatedListener.java b/payment-query/src/main/java/com/example/PaymentCreatedListener.java deleted file mode 100644 index 7c71dfe..0000000 --- a/payment-query/src/main/java/com/example/PaymentCreatedListener.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.example; - -import com.example.payment.domain.event.PaymentCreated; -import org.springframework.kafka.annotation.KafkaListener; -import org.springframework.stereotype.Service; - -@Service -public class PaymentCreatedListener { - - @KafkaListener(topics = "PaymentCreated", groupId = "group1") - public void consume(PaymentCreated message) { - System.out.println("receive message : " + message.toString()); - } -} \ No newline at end of file diff --git a/payment-query/src/main/java/com/example/payment/infra/kafka/PaymentCreatedListener.java b/payment-query/src/main/java/com/example/payment/infra/kafka/PaymentCreatedListener.java new file mode 100644 index 0000000..7fb6ff4 --- /dev/null +++ b/payment-query/src/main/java/com/example/payment/infra/kafka/PaymentCreatedListener.java @@ -0,0 +1,24 @@ +package com.example.payment.infra.kafka; + +import com.example.payment.domain.Payment; +import com.example.payment.domain.PaymentRepository; +import com.example.payment.domain.event.PaymentCreated; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.kafka.annotation.KafkaListener; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +@Slf4j +public class PaymentCreatedListener { + + private final PaymentRepository paymentRepository; + + @KafkaListener(topics = "PaymentCreated", groupId = "group1") + public void consume(PaymentCreated message) { + log.info("event received: {}", message); + Payment payment = message.toPayment(); + paymentRepository.save(payment); + } +} \ No newline at end of file