<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:
function:
definition: paperViewConsumer;paperDownloadConsumer;itemViewConsumer
bindings:
paperViewConsumer-in-0:
destination: paperViewCountTopic
paperDownloadConsumer-in-0:
destination: paperDownloadCountTopic
itemViewConsumer-in-0:
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️⃣ spring cloud stream에 사용될 Bean을 생성하기 위해 (Config class) 생성
</aside>
deprecated
되었고 새로운 버전의 spring boot에서는 **functional interface(함수형 코드 작성)
**을 사용한 코드작성방식으로 변경되었다.@Configuration
public class StreamConfig {
@Bean
public Consumer<PaperViewEvent> paperViewConsumer() {
return paperView -> {
// paperView 처리 로직
System.out.println("PAPER VIEW!!!!!!!!!!!!!!!!!!!!!!!!!");
};
}
@Bean
public Consumer<PaperDwldEvent> paperDownloadConsumer() {
return paperDownload -> {
// paperDownload 처리 로직
System.out.println("DWLD!!!!!!!!!!!!!!!!!!!!!!!!!");
};
}
@Bean
public Consumer<ItemViewEvent> itemViewConsumer() {
return itemView -> {
// itemView 처리 로직
System.out.println("ITEM VIEW!!!!!!!!!!!!!!!!!!!!!!!!!");
};
}
}
<aside> 5️⃣ message 요청 (REST 컨트롤러)
</aside>