<aside> 1️⃣ Spring Cloud Stream을 왜 사용할까?
</aside>
<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();
}