Queue System / / 2024. 2. 17. 15:30

RabbitMQ (4)

Acknowledgement

특징

  • RabbitMQ에서 소비자(Consumer)가 메시지를 정상적으로 수신했고 처리했음을 RabbitMQ 서버에 알리기 위해서 Acknowledgement라는 개념을 사용합니다. Acknowledgement는 메시지를 받은 동일한 Channel을 통해 보내집니다.
  • 이 매커니즘은 RabbitMQ에서 신뢰성을 보장하는 중요한 부분입니다. RabbitMQ는 Auto-Acknowledgement와 Manual-Acknowledgement가 존재합니다.
  • Auto-Acknowledgement의 경우, 메시지 처리의 성공 여부와 무관하게 자동으로 처리된 것으로 간주합니다.
  • Manual-Acknowledgement는 소비자가 명시적으로 처리 성공 또는 실패를 알리는 절차를 통해 메세지의 처리 여부를 판단합니다.

 

 

Auto-Acknowledgement

동작방식

  1. Publisher가 RabbitMQ에 메세지를 발행합니다.
  2. 발행된 메세지는 RabbitMQ의 Queue에 저장됩니다.
  3. RabbitMQ는 Queue에서 메세지를 선택하여 Consumer에게 전달하기 위해 준비합니다.
  4. RabbitMQ는 네트워크를 통해 선택된 메세지를 Consumer의 Channel로 전달을 시도합니다. 이 과정에서 네트워크 문제나 다른 이유로 메세지 전달이 실패할 수 있습니다.
  5. 메세지가 Consumer에게 전달되는 순간, RabbitMQ는 자동으로 Acknowledgement를 수신한 것으로 간주하고 메시지를 큐에서 제거합니다. 실제로 Consumer 애플리케이션에 메시지가 도달하지 않았다 하더라도, RabbitMQ는 메시지가 성공적으로 처리된 것으로 간주합니다.
  6. Consumer 애플리케이션에서는 실제로 메시지를 수신하여 처리합니다. 문제가 발생하더라도 RabbitMQ는 이미 메시지를 처리된 것으로 간주하고 있기 때문에, 메시지를 다시 전송하지 않습니다.

특징

  • Auto 모드의 특징은 Consumer에게 메세지를 전달하면 반드시 처리 여부를 전달합니다.
  • 다양한 이유로 메세지가 유실되더라도 메시지는 처리된 것으로 간주되어 큐에서 제거될 수 있습니다.
  • 이는 메시지 손실의 위험을 내포하고 있습니다.
  • 신뢰성보다 처리량에 중점을 두는 경우에 사용하는 것이 바람직합니다.
  • 메시지 처리량을 최대화하고 시스템의 성능을 높일 수 있습니다.

 

 

Manual-Acknowledgement

동작방식

  1. Publisher가 RabbitMQ에 메세지를 발행합니다.
  2. 발행된 메세지는 RabbitMQ의 Queue에 저장됩니다.
  3. RabbitMQ는 Queue에서 메세지를 선택하여 Consumer에게 전달하기 위해 준비합니다.
  4. RabbitMQ는 네트워크를 통해 선택된 메세지를 Consumer의 Channel로 전달을 시도합니다. 이 과정에서 네트워크 문제나 다른 이유로 메세지 전달이 실패할 수 있습니다.
  5. Consumer 애플리케이션에서는 실제로 메시지를 수신하여 처리합니다.
  6. 메세지를 성공적으로 처리하면 ack를 실패하면 nack 또는 reject을 전송합니다.
  7. RabbitMQ는 Acknowledgement를 수신하면 Queue에서 메세지를 제거하거나 재처리합니다.

특징

  • Manual 모드의 특징은 처리 여부를 사용자가 직접 보내야 합니다.
  • 다양한 케이스에 대해 예외 처리가 중요하게 작용합니다.
  • 메세지가 유실되는 상황에서는 TPS를 고려하여 적절한 TTL을 설정하여 비정상적으로 오랜시간 Queue에 머무는 메세지에 대한 처리 방식을 선택 할 수 있습니다.
  • 메세지를 수신했지만, 내부적인 로직에 따라 실패가 발생한 상황에 대해 처리 방식을 선택 할 수 있습니다.
  • 재처리 방식에는 Requeue 또는 Dead Lettering Queue를 이용한 방식이 있을 수 있습니다.

'Queue System' 카테고리의 다른 글

RabbitMQ (3)  (0) 2024.01.24
RabbitMQ (2)  (0) 2024.01.23
RabbitMQ (1)  (0) 2024.01.22
Message Queue vs Event Queue  (1) 2024.01.21
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유