Skip to content

thxu2/RabbitExampleGO

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

RabbitTz — простая система оповещений

Минимальный пример системы оповещения на Go с использованием RabbitMQ, docker-compose и простого web-интерфейса.

Функциональность:

  • Отправка сообщения через web-интерфейс (index.html, отдаётся Go-сервером)
  • REST endpoint POST /api/send для отправки сообщений програмно
  • Отправка сообщения в RabbitMQ (очередь notifications)
  • Консумер RabbitMQ, который читает сообщения из очереди и выводит их в консоль

Структура проекта

  • backend/cmd/api — HTTP API + отдача статики (фронт)
  • backend/cmd/consumer — консумер RabbitMQ, печатает сообщения в консоль
  • backend/internal/rabbitmq — обёртка над RabbitMQ (publisher + consumer-функция)
  • backend/web — простой HTML/JS фронт
  • backend/Dockerfile — сборка бинарей api и consumer
  • docker-compose.yml — поднимает RabbitMQ, API и консумер

Запуск через docker-compose (рекомендуется)

Требования: установлен Docker и docker-compose.

Из корня проекта:

docker-compose up --build

Будут подняты сервисы:

  • rabbitmq — RabbitMQ + web-интерфейс управления
  • api — Go HTTP API + фронт
  • consumer — консумер, читающий очередь notifications

Порты:

  • Web-интерфейс приложения: http://localhost:8080
  • RabbitMQ management UI: http://localhost:15672 (логин/пароль: guest / guest)

Проверка работы

  1. Откройте браузер: http://localhost:8080

  2. Введите текст сообщения и нажмите «Отправить».

  3. В консоли контейнера go-consumer вы увидите строки вида:

    [x] Received: Тестовое оповещение
    

    Посмотреть логи можно, например:

    docker-compose logs -f consumer
  4. RabbitMQ UI будет доступен по адресу http://localhost:15672 — очередь называется notifications.

Запуск без Docker (локально)

Требования: Go (1.22+) и установленный/запущенный RabbitMQ локально.

  1. Установите зависимости:

    cd backend
    go mod tidy
  2. Запустите RabbitMQ локально (по умолчанию amqp://guest:guest@localhost:5672/).

  3. В одном терминале запустите HTTP API:

    cd backend
    set RABBITMQ_URL=amqp://guest:guest@localhost:5672/
    set HTTP_ADDR=:8080
    go run ./cmd/api

    На Linux/macOS вместо set используйте:

    export RABBITMQ_URL=amqp://guest:guest@localhost:5672/
    export HTTP_ADDR=:8080
    go run ./cmd/api
  4. В другом терминале запустите консумер:

    cd backend
    set RABBITMQ_URL=amqp://guest:guest@localhost:5672/
    go run ./cmd/consumer
  5. Откройте http://localhost:8080 и отправьте сообщение — оно попадёт в очередь и будет выведено в консоли консюмера.

REST API

  • POST /api/send

    Тело запроса (JSON):

    {
      "message": "строка с вашим сообщением"
    }

    Ответ при успехе:

    {
      "status": "ok",
      "message": "строка с вашим сообщением"
    }

Код максимально простой и «на коленке», чтобы показать идею интеграции Go + RabbitMQ + web-интерфейс.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published