소개
Service Bus Explorer TUI는 Azure Service Bus의 큐, 토픽, 구독 및 메시지를 터미널에서 관리할 수 있는 크로스플랫폼 TUI입니다. CosX가 GitHub에서 공개한 이 도구는 Rust와 ratatui로 작성되었으며 Azure Service Bus REST API를 직접 호출해 동작합니다. SAS 연결 문자열과 Azure AD 인증을 모두 지원하며, 기존 ServiceBusExplorer와 유사한 환경을 크로스플랫폼으로 제공하는 것을 목표로 합니다.
상세정보
엔터티 탐색 및 메트릭
- 큐, 토픽, 구독을 메시지 카운트가 표시되는 트리 형태로 탐색
- 토픽은 모든 구독의 활성/배달 못한 메시지 수를 합산한 집계 값을 표시
- 엔터티 속성과 런타임 지표(활성, 배달 못함, 예약, 전송) 확인
메시지 작업
- 메시지 및 배달 못한 편지 큐 피킹(개수 지정 가능)
- 사용자 지정 속성, 콘텐츠 유형, TTL, 세션 ID, 예약 인큐 시간을 지정한 메시지 전송
- 메시지 인라인 편집 및 재전송(WYSIWYG), 배달 못한 메시지를 원래 엔터티로 재전송
- 다른 Service Bus 네임스페이스로 메시지 복사(전체 편집 지원)
엔터티 및 일괄 작업
- 큐, 토픽, 구독 생성 및 삭제
- 메시지 퍼지(동시 삭제), 배달 못한 큐 비우기, 배달 못한 메시지를 메인으로 재전송
- 토픽 작업은 모든 구독으로 자동 팬아웃
- 메시지 패널에서 개별 메시지 삭제(확인 포함), 배달 못한 메시지 일괄 재전송, 표시된 메시지 일괄 삭제
연결 및 인증
- SAS 토큰 및 Azure AD(Microsoft Entra ID) 인증 지원
- 기본 자격 증명 체인을 통한 Azure AD 인증
- Azure Service Bus Emulator 지원(UseDevelopmentEmulator=true)
- 저장된 다중 연결과 TOML 기반 구성 유지
모니터링 및 보안
- Azure Monitor 지표: 상세 패널의 인라인 스파크라인(활성, 배달 못함) 및 전체 메트릭 오버레이(V, Azure AD 전용)
- 신뢰할 수 없는 메시지 콘텐츠에 대한 터미널 이스케이프 인젝션 방지
- Vim 스타일 키바인딩
설치 방법
- macOS/Linux:
brew tap CosX/tap후brew install CosX/tap/service-bus-explorer-tui - Windows:
winget install CosX.ServiceBusExplorerTui또는choco install service-bus-explorer-tui - 사전 빌드 바이너리 설치:
cargo binstall service-bus-explorer-tui - 소스 빌드:
cargo install service-bus-explorer-tui(Rust 1.70+ 필요) 또는 GitHub Releases에서 플랫폼별 아티팩트 다운로드
winget 설치 명령은 winget install --id CosX.ServiceBusExplorerTui --exact이며, 패키지 메타에 명시된 명령입니다. GitHub Releases에서는 Linux x86_64/ARM64, macOS Intel/Apple Silicon, Windows x86_64용 아티팩트를 제공합니다.
시작 및 연결
설치 후 터미널에서 service-bus-explorer-tui를 실행하면 빈 트리 패널이 표시됩니다. c 키로 연결 대화상자를 열어 새 연결을 추가하거나 저장된 연결을 선택할 수 있습니다.
- SAS 연결 문자열을 사용하는 경우:
c→ SAS 선택 → Endpoint, SharedAccessKeyName, SharedAccessKey가 포함된 연결 문자열 입력 → Enter - Azure AD를 사용하는 경우:
c→ Azure AD 선택 → 네임스페이스 이름(예:mynamespace,.servicebus.windows.net은 자동 추가) 입력 → Enter로 기본 자격 증명 체인을 통한 인증 진행 - Azure Service Bus Emulator로 로컬 개발 시: UseDevelopmentEmulator=true가 포함된 연결 문자열을 사용하면 TUI가 에뮬레이터 HTTP 포트(5300)로 자동 연결
연결 정보는 OS별 구성 파일에 저장되어 다음 실행 시 다시 사용할 수 있습니다(Linux: ~/.config/sb-explorer/config.toml, macOS: ~/Library/Application Support/sb-explorer/config.toml, Windows: %APPDATA%sb-explorerconfig.toml).
활용 예시
- 개발·스테이징·프로덕션 등 여러 Service Bus 네임스페이스에 저장된 연결을 전환하며 큐·토픽 구조를 키보드만으로 탐색
- 메시지 전송·피킹·재전송으로 큐 처리 흐름 점검 및 문제 메시지 재처리
- 다른 네임스페이스로 메시지를 복사·편집하여 환경 간 테스트 데이터 이동, 마이그레이션 시 메시지 이동, 수정 후 재플레이
- Azure Monitor 메트릭 오버레이로 활성·배달 못함·예약·수신·발신 메시지 추세를 확인해 운영 상태 모니터링
- Azure Service Bus Emulator에 연결해 로컬 개발 환경에서 동일한 작업 흐름을 검증
주요 키보드 단축키
- 탐색:
↑/k,↓/j,←/h,→/l,Enter,g/G,Tab/Shift+Tab - 연결:
c(연결 관리),r/F5(트리 새로 고침) - 트리 패널:
n(엔터티 생성),x(삭제),s(메시지 전송),p(피킹),d(배달 못함 피킹),m/M/V(메트릭),P(엔터티 비우기) - 메시지 패널:
1/2(메시지/DLQ 탭),Enter,Esc,x(삭제),e(편집·재전송),C(다른 연결로 복사),R(DLQ 일괄 재전송),D(일괄 삭제) - 폼 편집:
Tab/↑/↓(필드 이동),Enter(본문 내 개행),F2/Ctrl+Enter(제출),Esc(취소) - 일반:
?(도움말),q/Ctrl+C(종료),Esc(백그라운드 작업 취소)
제한·라이선스·확인사항
- 라이선스는 MIT이며 LICENSE 파일을 통해 확인할 수 있습니다
- Azure SDK 의존성을 사용하지 않고 Azure Service Bus REST API를 직접 호출하며, 공식 Rust SDK가 유지보수되지 않는 점을 이유로 reqwest 기반 클라이언트를 채택했다고 README에 명시되어 있습니다
- 피킹은 PeekOnly=true에 커서가 없어 peek-lock 후 모든 잠금을 abandon하는 방식으로 구현되어 각 피킹마다 DeliveryCount가 증가합니다
- 퍼지(일괄 삭제)는 기본 32개의 병렬 워커로 동작하며 진행률과 취소가 지원됩니다
- Azure Monitor의 전체 메트릭 오버레이(V)는 Azure AD 인증에서만 사용 가능합니다
- README의 면책 조항에 따르면 이 애플리케이션은 코딩 에이전트를 활용해 개발되었으며 사용은 본인 책임입니다
시스템 요구사항
Azure Service Bus 네임스페이스에 접근할 수 있어야 하며, 인증 수단으로 SAS 연결 문자열 또는 Azure AD 자격 증명(환경 변수, Azure CLI 로그인, 관리 ID 등 기본 자격 증명 체인)이 필요합니다. Azure Monitor 메트릭 상세 오버레이(V) 기능은 Azure AD 인증 시에만 동작합니다. 소스에서 직접 빌드할 경우 Rust 1.70 이상이 필요하며 rustup을 통해 설치할 수 있습니다. Azure Service Bus Emulator를 사용해 로컬에서 연결할 때는 UseDevelopmentEmulator=true 옵션이 포함된 연결 문자열을 사용합니다.


