RabbitMQ에서 Consumer Timeout 설정하는 방법

RabbitMQ Consumer가 오랜 시간이 걸리는 작업을 할 경우 메시지 큐에 있던 Ready상태의 메시지는 Unacked상태로 바뀌며 메시지 큐에 대기하게 됩니다. 작업이 끝나고 Consumer가 Acknowledge를 전송할 경우 해당 메시지는 큐에서 제거되지만, 설정된 Timeout이 지나면 Unacked상태의 메시지는 다시 Ready 상태로 Queue에 돌아갑니다. 이 경우 수동으로 Acknowledge를 전송하는 방법도 있지만 간단하게 Timeout의 설정을 크게 잡아 문제를 해결 할 수 있습니다.

1단계: RabbitMQ 설치 및 설정

RabbitMQ 설치는 이미 되어 있다고 가정합니다. 설치가 필요하신 분들은 이전 포스팅을 참조하세요.

Ubuntu 22.04 LTS 서버에 RabbitMQ 설치

2단계: 설정파일 편집

RabbitMQ 설정은 rabbitmq.conf 파일에서 수행합니다. 이 파일은 일반적으로 /etc/rabbitmq/ 디렉토리에 위치합니다. 파일이 없을 경우 새로 생성합니다.

sudo nano /etc/rabbitmq/rabbitmq.conf

3단계: Consumer Timeout 설정

설정 파일에 다음 내용을 추가하여 타임아웃을 설정합니다. 예를 들어, 타임아웃을 2시간(7,200,000ms)으로 설정하려면 다음과 같이 입력합니다. 기본값은 30분(1800000ms) 입니다. 매뉴얼에 따르면 1분 이하의 값은 지원하지 않으며, 5분보다 작은 값은 권장하지 않는다고 합니다.

# 2 hour
consumer_timeout = 7200000

advanced.config을 다음과 같이 설정하여 아예 timeout을 없애버릴 수도 있지만 권장하지 않으며 차라리 몇시간 처럼 큰 값으로 설정하라고 합니다.

%% advanced.config
[
  {rabbit, [
    {consumer_timeout, undefined}
  ]}
].

4단계: RabbitMQ 서버 재시작

구성 파일을 변경한 후 RabbitMQ 서버를 재시작하여 변경 사항을 적용합니다. 다음 명령어를 입력하세요:

sudo systemctl restart rabbitmq-server

또는

sudo service rabbitmq-server restart

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.

Scroll to Top