Skip to content

🐰 Add RabbitMQ Integration for Chat Log Processing Triggers#1

Merged
ChanYoungHan merged 7 commits into
mainfrom
feature/enable_mq
Jun 18, 2025
Merged

🐰 Add RabbitMQ Integration for Chat Log Processing Triggers#1
ChanYoungHan merged 7 commits into
mainfrom
feature/enable_mq

Conversation

@ChanYoungHan

Copy link
Copy Markdown
Owner

🐰 Add RabbitMQ Integration for Chat Log Processing Triggers

📋 개발 배경 (Development Background)

기존의 MCP Chat Logger는 단순히 파일 저장만 지원했으나, chat log를 가공하기 위한 트리거로서 AMQP(RabbitMQ)를 사용하도록 확장했습니다.

AMQP를 도입한 주요 이유:

  • 🔒 트리거 소실 방지: 파일 저장과 동시에 RabbitMQ로 메시지를 발행하여 후속 처리 트리거가 소실되지 않도록 보장
  • 🔄 비동기 처리: Chat log 처리 작업을 백그라운드에서 안정적으로 수행
  • 📈 확장성: 여러 consumer가 동일한 메시지를 처리할 수 있는 구조 제공
  • 🛠️ 신뢰성: RabbitMQ의 persistence와 delivery confirmation으로 메시지 손실 방지

✨ 주요 변경사항 (Key Changes)

🏗️ 아키텍처 개선

  • 새로운 모듈 구조: utils/rabbitmq_publisher.py 추가로 AMQP 로직 분리
  • 개발 환경 도구: dev-tools/ 디렉토리에 개발용 Docker 환경 집중
  • 자동 모드 감지: 환경변수 설정 여부에 따른 자동 RabbitMQ/파일전용 모드 전환

🔧 핵심 기능 추가

  • RabbitMQ 통합:
    • Exchange: llmLogger (direct type)
    • Queue: llm_logger
    • Routing Key: llm_logger
  • 이중 저장 메커니즘: 파일 저장 + RabbitMQ 메시지 발행
  • 환경변수 기반 자동 설정: RABBITMQ_HOST, RABBITMQ_PORT, RABBITMQ_USERNAME, RABBITMQ_PASSWORD

🌍 국제화 및 사용성 개선

  • 다국어 README: 중국어, 한국어, 영어 지원
  • 개발/운영 환경 분리: CloudAMQP(운영) vs Docker(개발)
  • 단순화된 실행: 복잡한 CLI 옵션 제거, 환경변수만으로 모드 결정

📊 변경 통계 (Change Statistics)

12 files changed, 1328 insertions(+), 277 deletions(-)

🆕 새로운 파일들

  • utils/rabbitmq_publisher.py - RabbitMQ 메시지 발행 모듈
  • dev-tools/docker-compose.yml - 개발용 RabbitMQ 환경
  • dev-tools/.env.example - 환경변수 템플릿
  • dev-tools/test_rabbitmq.py - 개발용 연결 테스트
  • rabbitmq_init/init.sh - RabbitMQ 초기화 스크립트

🔄 주요 수정

  • chat_logger.py - AMQP 통합 및 자동 모드 감지 로직 추가
  • README.md, README_ko.md, README_en.md - 전면 개편으로 새로운 아키텍처 반영
  • pyproject.toml - pika, python-dotenv 의존성 추가

❌ 제거된 요소

  • README_zh.md - 중복 파일 정리 (README.md가 중국어)
  • Makefile - 환경변수 기반 자동 설정으로 대체
  • 불필요한 MCP 도구들 (test_rabbitmq_connection, get_rabbitmq_config)

🚀 사용 예시 (Usage Examples)

RabbitMQ 모드 (환경변수 설정)

# .env 파일 설정 후
uv run chat_logger.py
# 출력: 🔧 MCP Chat Logger starting with RabbitMQ enabled

파일 전용 모드 (환경변수 없음)

# 환경변수 없이 실행
uv run chat_logger.py  
# 출력: 🔧 MCP Chat Logger starting in file-only mode (RabbitMQ not configured)

🔗 연관 이슈 및 배경

이 PR은 chat log 데이터의 후속 처리를 위한 안정적인 트리거 시스템 구축을 목표로 합니다. 파일 저장만으로는 처리 트리거가 소실될 위험이 있어, RabbitMQ를 통한 메시지 기반 트리거 시스템을 도입하여 데이터 처리의 안정성과 확장성을 확보했습니다.


이 Pull Request는 기존 기능을 유지하면서도 확장 가능한 아키텍처로 발전시킨 중요한 업데이트입니다. 🎉

@ChanYoungHan ChanYoungHan self-assigned this Jun 18, 2025
@ChanYoungHan ChanYoungHan merged commit 640e8f1 into main Jun 18, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant