amqp_login 함수 설명

백엔드&인프라 추종자·2025년 11월 11일

좋습니다, 정우님. 😊
rabbitmq-c 라이브러리에서 사용하는

amqp_login(conn, "/", 0, 131072, 0, AMQP_SASL_METHOD_PLAIN, USERNAME, PASSWORD);

각 인자의 의미를 하나씩 자세히 설명드리겠습니다.


함수 시그니처

amqp_rpc_reply_t amqp_login(
    amqp_connection_state_t state,
    const char *vhost,
    int channel_max,
    int frame_max,
    int heartbeat,
    amqp_sasl_method_enum sasl_method,
    const char *username,
    const char *password
);

1️⃣ state

  • 타입: amqp_connection_state_t
  • 설명: RabbitMQ 연결 객체.
  • 생성: conn = amqp_new_connection(); 후 TCP 소켓 연결과 함께 사용

2️⃣ vhost

  • 타입: const char *
  • 설명: 가상 호스트(Virtual Host). RabbitMQ는 하나의 서버 안에 여러 논리적 공간을 만들어 큐/익스체인지 분리 가능
  • 예: "/" 는 기본 vhost
  • 필요에 따라 "my_vhost" 처럼 지정 가능

3️⃣ channel_max

  • 타입: int
  • 설명: 최대 채널 수 제한
  • 0: 서버 기본값 사용
  • 예: 0은 제한 없음, 1 이상의 숫자 지정 가능

참고: RabbitMQ에서 1개의 TCP 연결에 여러 채널을 만들어 독립적인 큐/익스체인지 사용 가능


4️⃣ frame_max

  • 타입: int
  • 설명: 최대 프레임 크기 (바이트)
  • 131072 = 128KB
  • 프레임: AMQP 프로토콜의 최소 단위 메시지 조각.
  • 너무 작으면 큰 메시지 전송 시 분할 발생, 너무 크면 메모리 사용 증가

5️⃣ heartbeat

  • 타입: int
  • 설명: 하트비트 간격(초)
  • 0: 사용 안 함
  • 0: 서버와 클라이언트가 주기적으로 살아있는지 확인

  • 네트워크 끊김 감지 용도로 사용

6️⃣ sasl_method

  • 타입: amqp_sasl_method_enum
  • 설명: 로그인 인증 방식 선택
  • AMQP_SASL_METHOD_PLAIN: 가장 기본적이고 일반적인 username/password 인증
  • 그 외: AMQP_SASL_METHOD_EXTERNAL

7️⃣ username

  • 타입: const char *
  • 설명: 로그인 사용자 이름 (RabbitMQ 계정)
  • 예: "guest"

8️⃣ password

  • 타입: const char *
  • 설명: 로그인 비밀번호
  • 예: "guest"

🔹 예제 정리

reply = amqp_login(
    conn,                     // 연결 객체
    "/",                      // 기본 가상 호스트
    0,                        // 채널 제한 0 = 서버 기본
    131072,                   // 최대 프레임 크기 128KB
    0,                        // heartbeat 0 = 사용 안 함
    AMQP_SASL_METHOD_PLAIN,   // username/password 인증
    USERNAME,                 // "guest"
    PASSWORD                  // "guest"
);

이 호출 후, reply.reply_type을 확인해서 로그인 성공 여부를 판단합니다.


원하시면 제가 C RabbitMQ Consumer 예제를 ffmpegd 데몬 구조 + signal + stdout 로그`까지 통합한 버전으로 만들어서
즉시 Docker 환경에서도 사용할 수 있게 해 드릴 수도 있습니다.

그거 만들어 드릴까요?

profile
AI 답변 글을 주로 올립니다.

0개의 댓글