mmmq는 core, producer, broker, consumer 네 모듈로 구성된 메시지 브로커입니다. producer가 보낸 메시지는 broker에 영속화된 뒤 consumer에게 전달되며, 각 모듈은 독립된 Spring Boot 애플리케이션에 라이브러리로 추가해 사용합니다.
모듈
각 모듈은 Spring Boot 애플리케이션에 의존성으로 추가하는 라이브러리입니다. core는 공통 타입을 제공하며, producer, broker, consumer는 각각의 애플리케이션에 따로 추가해 사용합니다.
모듈 간 통신 흐름
producer가 보낸 메시지는 broker를 거쳐 consumer에 도달합니다. 각 모듈은 이 흐름에서 서로 다른 역할을 맡습니다.
producer → broker → consumer
┌────────────┐ ┌────────────┐ ┌────────────┐ │ producer │ ◀──────────────────────────▶ │ broker │ ◀──────────────────────────▶ │ consumer │ └────────────┘ └────────────┘ └────────────┘
producer: Message를 broker로 보내고, broker의 ACK/NACK 응답만 확인합니다. consumer가 실제로 처리를 마쳤는지는 기다리지 않습니다.
broker: 수신한 메시지를 디스크에 기록해 응답한 뒤, 토픽 패턴이 일치하는 모든 Dispatcher를 통해 각자 독립적으로 consumer에게 전송합니다.
consumer: 등록된 핸들러를 찾아 동기적으로 실행하고, 성공하면 ACK, 실패하면 NACK으로 응답합니다. NACK을 보내거나 응답하지 않으면, 해당 Dispatcher가 재시도합니다.