CS 2

[AMQP] RabbitMQ와 DLX/DLQ

개요AMQP (advanced message queuing protocol)란 메세지를 생산하는 Producer와 메세지를 소비하는 Consumer 사이에 메세지를 보관하는 Broker를 두어, 생산자와 소비자를 연결하는 네트워크 프로토콜을 의미한다. AMQP를 사용하는 대표적인 서비스로는 RabbitMQ가 있으며, 구성요소는 다음과 같다.Exchange : 메세지 생산자인 Producer는 메세지를 발행할 때 Queue가 아닌, Exchange에 메세지를 저장한다. Exchange에 저장된 메세지는 Binding Key를 사용하여 사전에 정의된 바인딩 규칙에 따라 적절한 Queue로 옮겨진다.Queue : Queue는 Exchange로 부터 이동해온 메세지들을 보관하는 저장소로서, 메세지 소비자인 Co..

CS 2025.03.24

Blocking/Non-Blocking(블로킹/논블로킹), Sync/Async(동기/비동기), Concurrent/Parallel(동시/병렬)

이번 글의 목표는 Blocking/Non-Blocking(블로킹/논블로킹), Sync/Async(동기/비동기), 그리고 Sync/Async를 이해하는 데 필요한 Concurrent/Parallel(동시/병렬) 이 세 가지를 이해하는 것이다.Sync/Async는 자바스크립트에서 비동기 통신을 사용하며 자주 접하였던 내용이다. 하지만 Blocking/Non-Blocking은 Webflux 관련 자료를 찾는 과정에서 처음 알게되었다. Webflux는 Async, Non-Blocking을 사용한다고 하는데, Blocking과 Non-Blocking의 개념을 모르니 이해를 하는 데 어려움이 있었다. 처음에는 단순히 Sync == Blocking, Async == Non-Blocking 으로 이해했지만 이는 잘못된..

CS 2024.10.11