본문 바로가기
▶ Back-End/Java

SpringBoot에서 MQTT Client + WebFlux 구축

by 오늘도 코딩 2022. 12. 2.
728x90
반응형

WebFlux를 적용한 MQTT Client를 구축하고

Topic 메시지 도착 시 Callback으로 Bean을 통해 서비스 구분

*Mqtt Broker(mosqitto) 아래 관련 글 참고

*자세한 설명 생략

 

 

▷ Project 전체 구조

*파일 이름으로 검색 가능

 

 

 

▷ build.gradle

 

 

 

▷ application.properties

 

 

 

▷ MqttApplication.java

*아무 작업하지 않음

 

 

 

▷ MqttPublishVO.java

*MqttController 발행 요청 VO

 

 

 

▷ MqttSubscribeVO.java

*MqttController 구독 요청 VO

 

 

 

▷ MqttController.java

 

 

 

▷ UserController.java

 

 

 

▷ MqttService.java

 

 

 

▷ A/B/C ServiceImpl

 

 

 

▷ MqttUtil.java

 

 

 

▷ Mqtt.java

 

 

 

▷ SinksListener.java

 

 

 

▷ user.jsp

*View 쪽은 설명할 게 없음

 

 

 

▷ 결과 확인

*단순히 동작만 확인

 

Main Page

 

결과 로그

 

 

▷ 관련 글

 

MQTT 란?

MQTT ( Message Queueing Telemetry Transport ) * 자세한 설명 생략 ▷ MQTT 란? - IoT와 같이 제한되거나 대규모 트래픽 전송을 위해 만들어진 발행/구독 기반의 메시징 프로토콜 - 브로커와 클라이언트는 TCP/IP

coding-today.tistory.com

 

Spring WebFlux 란?

* 자세한 설명 생략 ▷ WebFlux란? - Spring WebFlux는 Spring 5에서 새롭게 추가된 모듈 - Reactive-stack Web Framework이며 non-blocking의 reactive stream을 지원 - Flux와 Mono라는 두 종류의 Publisher와 Cold, Hot 방식 존재 -

coding-today.tistory.com

 

Spring WebFlux Non-Blocking 방법

Mono, Flux를 이용했다고 Non-Blocking이 되진 않는다. *Thread Pool을 통해서도 가능 *WebClinet 생략 *자세한 설명 생략 ▷ Reactor Thread 지정 * 동일한 Thread를 사용하지 않도록 Reactor에게 Thread 지정 종류 설명

coding-today.tistory.com

 

SpringBoot JSP 설정

Spring Boot에 내장된 Tomcat은 JSP을 지원하지 않는다. *gradle 사용 *자세한 설명 생략 ▷ build.gradle *의존성 추가 implementation 'javax.servlet:jstl' implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' ▷ application.pr

coding-today.tistory.com

 

MQTT Broker(mosqitto) 설치 및 설정

Docker를 이용해 MQTT Broker를 간단하게 설치할 수 있다. *자세한 설명 생략 ① docker-compose.yml 생성 *docker-compose.yml 설명 아래 관련 글 참고 version: "3.7" services: mqtt: container_name: mqtt-broker image: eclipse-mosqu

coding-today.tistory.com

 

@EventListener Example

*자세한 설명 생략 ▷ Example - Application Context 초기화 및 수정 시 파일을 읽어 오는 예제 @Component // Class를 Bean으로 등록 public class TestGetName { @Getter @Setter private String USER_NAME = ""; // 애플리케이션 시

coding-today.tistory.com

 

Sinks.many() 란?

EmitterProcessor가 @Deprecated 돼서 Sinks.many()로 대체 사용 *EmitterProcessor 내부에서 Sinks를 사용하고 있음 *Processor : 처리 단계를 나타내며 발행자 인터페이스와 구독자 인터페이스를 모두 상속 *자세한

coding-today.tistory.com

 

 

728x90
728x90

'▶ Back-End > Java' 카테고리의 다른 글

Custom Annotation 생성 Example  (0) 2023.07.26
SpringBoot Maria DB + MyBatis 설정  (0) 2022.12.06
SpringBoot JSP 설정  (0) 2022.12.01
JWE Example(nimbus)  (0) 2022.10.21
Create RSA Keypair(.pem)  (0) 2022.10.21

댓글