1. 코드 작성 방법


<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>

@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>