# NATS Queue Visualizer Веб-приложение на Go для визуализации содержимого очередей NATS в реальном времени. ## Возможности - 🔄 Подписка на NATS subjects/очереди в реальном времени - 📊 Веб-интерфейс: продюсер/потребитель по сообщениям, активные подключения к NATS - 🔍 Фильтрация по subject и поиск по содержимому - 📈 Статистика: количество сообщений, subjects, общий размер - 🌐 WebSocket для обновлений в реальном времени - 💾 Хранение последних N сообщений в памяти ## Требования - Go 1.21 или выше - NATS сервер (локальный или удаленный) ## Установка 1. Клонируйте репозиторий или скачайте файлы 2. Установите зависимости: ```bash go mod download ``` ## Конфигурация Все настройки приложения находятся в файле `config.yaml`. Создайте этот файл или отредактируйте существующий: ```yaml # URL NATS сервера nats_url: "nats://localhost:4222" # Аутентификация NATS (используйте один из вариантов) # Вариант 1: Токен # token: "your-token-here" # Вариант 2: Имя пользователя и пароль # username: "your-username" # password: "your-password" # URL HTTP-мониторинга NATS (порт 8222) — для отображения активных подключений # nats_monitor_url: "http://localhost:8222" # Список subjects для подписки (через запятую) subjects: ">" # Порт HTTP сервера port: "8080" # Максимальное количество сообщений для хранения в памяти max_messages: 1000 ``` ## Использование ### Базовое использование ```bash go run main.go ``` Приложение автоматически загрузит конфигурацию из `config.yaml` в текущей директории. ### Использование другого конфигурационного файла ```bash go run main.go /path/to/custom-config.yaml ``` Можно указать путь к другому конфигурационному файлу в качестве аргумента командной строки. ### Примеры subjects - `>` - все subjects - `orders.*` - все subjects, начинающиеся с `orders.` - `events.>` - все subjects в пространстве имен `events` - `orders.created,orders.updated` - конкретные subjects через запятую ## Веб-интерфейс Откройте браузер и перейдите на `http://localhost:8080` ### Функции интерфейса: 1. **Фильтр по subject** - выберите конкретный subject из выпадающего списка 2. **Поиск** - введите текст для поиска по содержимому сообщений 3. **Очистить** - удалить все сообщения из памяти (не влияет на NATS) 4. **Обновить** - перезагрузить все сообщения с сервера ### Статистика Интерфейс показывает: - Общее количество полученных сообщений - Количество уникальных subjects - Общий размер всех сообщений в байтах ## API Endpoints - `GET /` - веб-интерфейс - `GET /api/messages?subject=...` - получить все сообщения (опционально отфильтрованные по subject) - `GET /api/subjects` - получить список всех subjects - `WS /ws` - WebSocket для получения сообщений в реальном времени ## Примеры конфигурации ### Аутентификация с токеном ```yaml nats_url: "nats://nats.example.com:4222" token: "your-secret-token" subjects: ">" port: "8080" max_messages: 1000 ``` ### Аутентификация с username/password ```yaml nats_url: "nats://nats.example.com:4222" username: "myuser" password: "mypassword" subjects: ">" port: "8080" max_messages: 1000 ``` ### Подписка на конкретные subjects Отредактируйте `config.yaml`: ```yaml nats_url: "nats://localhost:4222" subjects: "orders.created,orders.updated,orders.deleted" port: "8080" max_messages: 1000 ``` ### Подписка на все subjects в пространстве имен ```yaml subjects: "events.>" ``` ### Подключение к удаленному NATS серверу ```yaml nats_url: "nats://nats.example.com:4222" ``` ### Увеличение лимита сообщений ```yaml max_messages: 5000 ``` ## Сборка Для создания исполняемого файла: ```bash go build -o nats-ui main.go ``` Затем запустите: ```bash ./nats-ui ``` Или с указанием конфигурационного файла: ```bash ./nats-ui /path/to/config.yaml ``` ## Структура проекта ``` nats-ui/ ├── main.go # Основной код приложения ├── index.html # Веб-интерфейс ├── config.yaml # Конфигурационный файл ├── go.mod # Зависимости Go └── README.md # Документация ``` ## Зависимости - `github.com/nats-io/nats.go` - клиент NATS - `github.com/gorilla/websocket` - WebSocket поддержка - `gopkg.in/yaml.v3` - парсер YAML конфигурации ## Лицензия MIT