1. Spring Cloud Stream를 사용하는 이유


<aside> 1️⃣ Spring Cloud Stream을 왜 사용할까?

</aside>

2. 코드 작성


<aside> 1️⃣ gradle에 의존성 추가

</aside>

// spring cloud stream
implementation 'org.springframework.cloud:spring-cloud-starter-stream-rabbit'
implementation 'org.springframework.boot:spring-boot-starter-amqp'

<aside> 2️⃣ application.yml에 속성 추가

</aside>

spring:
 cloud:
    stream:
      bindings:
        paperViewOutput:
          destination: paperViewCountTopic
        paperDownloadOutput:
          destination: paperDownloadCountTopic
        itemViewOutput:
          destination: itemViewCountTopic

<aside> 3️⃣ 이벤트 생성 (지금은 DB insert용)

</aside>

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ToString
public class PaperViewEvent {
    private Integer paperSn;
    private String ipAddress;
    private Paper paper;
}

<aside> 4️⃣ EventSource 생성

</aside>

public interface PaperEventSource {

    String PAPER_VIEW_OUTPUT = "paperViewOutput";
    String PAPER_DOWNLOAD_OUTPUT = "paperDownloadOutput";
    String ITEM_VIEW_OUTPUT = "itemViewOutput";

    @Output(PAPER_VIEW_OUTPUT)
    MessageChannel paperViewOutput();

    @Output(PAPER_DOWNLOAD_OUTPUT)
    MessageChannel paperDownloadOutput();

    @Output(ITEM_VIEW_OUTPUT)
    MessageChannel itemViewOutput();
}