티스토리 뷰

1. Order.java 포트 메소드에서 수정하기

   @PostPersist
    public void onPostPersist() {
        OrderPlaced orderPlaced = new OrderPlaced(this);
        orderPlaced.publishAfterCommit(getId());
    }

    @PostUpdate
    public void onPostUpdate() {
        OrderModified orderModified = new OrderModified(this);
        orderModified.publishAfterCommit(getId());
    }

 

getId()로 명시적으로 같은 파티션에 넣어버리기

 

2. AbstractEvent.java 포트 메소드에서 수정하기

 

order/src/main/java/kafka/scaling/infra/AbstractEvent.java

이 코드는 Spring Cloud Stream + Kafka를 사용하여 도메인 이벤트를 Kafka로 발행(publish) 하는 로직입니다.
정리하면, 도메인 이벤트 객체(AbstractEvent를 상속한 이벤트)가 트랜잭션 커밋 이후 Kafka로 메시지를 보내는 코드

public void publish(String messageKey) {
        /**
         * spring streams 방식
*/
        KafkaProcessor processor = OrderApplication.applicationContext.getBean(
            KafkaProcessor.class
        );
        MessageChannel outputChannel = processor.outboundTopic();
 
        outputChannel.send(
            MessageBuilder
                .withPayload(this)
                .setHeader(
                    MessageHeaders.CONTENT_TYPE,
                    MimeTypeUtils.APPLICATION_JSON
                )
                .setHeader("type", getEventType())
                .setHeader(KafkaHeaders.MESSAGE_KEY, messageKey.getBytes())
                .build()
        );
    }
    public void publishAfterCommit(Long messageKey) {
        TransactionSynchronizationManager.registerSynchronization(
            new TransactionSynchronizationAdapter() {
                @Override
                public void afterCompletion(int status) {
                    AbstractEvent.this.publish(String.valueOf(messageKey));
                }
            }
        );
    }

 

3. 주문 서비스를 재시작

console order

Ctrl + C 재시작

 

console delivery

Ctrl + C 재시작

 

console deliver-2nd

Ctrl + C 재시작

 

console order

mvn clean spring-boot:run

 

 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
글 보관함