좋습니다, 정우님. 😊
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
);
stateamqp_connection_state_tconn = amqp_new_connection(); 후 TCP 소켓 연결과 함께 사용vhostconst char *"/" 는 기본 vhost"my_vhost" 처럼 지정 가능channel_maxint참고: RabbitMQ에서 1개의 TCP 연결에 여러 채널을 만들어 독립적인 큐/익스체인지 사용 가능
frame_maxintheartbeatint0: 서버와 클라이언트가 주기적으로 살아있는지 확인
sasl_methodamqp_sasl_method_enumAMQP_SASL_METHOD_PLAIN: 가장 기본적이고 일반적인 username/password 인증AMQP_SASL_METHOD_EXTERNAL 등usernameconst char *"guest"passwordconst 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 환경에서도 사용할 수 있게 해 드릴 수도 있습니다.
그거 만들어 드릴까요?