Skip to content

Space27/JavaBackendSpring

Repository files navigation

Bot Scrapper

Link Tracker

Автор: Локосов Даниил

Приложение для отслеживания обновлений контента по ссылкам (GitHub и StackOverflow). При появлении новых событий отправляется уведомление в Telegram.

Проект написан на Java 21 с использованием Spring Boot 3.

Проект состоит из 2-х приложений:

  • Bot
  • Scrapper

Для работы требуется БД PostgreSQL. Присутствует опциональная зависимость на Kafka.

Стек

  • Java 21
  • Spring Boot 3
  • Взаимодействие сервисов - WebClient HttpInterface
  • БД - PostgreSQL
  • Миграции - Liquibase
  • Очередь сообщений - Kafka
  • Взаимодействие с БД - JDBC(через JdbcClient) / jOOQ / JPA
  • Docker
  • Тесты - JUnit 5 Mockito WireMock TestContainers
  • Метрики - Prometheus Grafana

Команды бота

Список команд бота доступен через вкладку Меню в диалоге с ботом:

  • /help - вывести список команд
  • /start - регистрация пользователя
  • /end - удаление пользователя
  • /track <ссылка> - начать отслеживать ссылку
  • /untrack <ссылка> - прекратить отслеживать ссылку
  • /list - вывести список отслеживаемых ссылок

Запуск проекта

Прямой запуск

  1. Клонировать репозиторий
  2. Конфигурационные файлы, в которых можно изменить модель Retry (fixed, linear, exponential), взаимодействие с БД (jdbc, jooq, jpa), а также использование очереди (true/false):
    • Bot - необходимо установить telegram-token
    • Scrapper
  3. Собрать проект командой mvn package -DskipTests (ввести команду можно через терминал, открывающийся двойным нажатием Ctrl в IntelliJ IDEA)
  4. Поднять PostgreSQL и накатить миграции (можно выполнить при помощи команды docker compose up -d liquibase-migrations)
  5. Опционально поднять Kafka при помощи docker compose up -d kafka1
  6. Опционально поднять Grafana при помощи docker compose up -d grafana
  7. Запустить приложение Scrapper, затем Bot

Запуск через Docker

Сервисы собраны в легковесные Docker-образы, которые можно подтянуть с GitHub Packages.
Для ручной сборки образов необходимо предварительно собрать проект командой mvn package -DskipTests.

  1. Скопировать или скачать compose.yml
  2. Скачать конфигурационные файлы миграции и prometheus или запустить docker compose run -d --rm files
  3. Указать в compose.yml TELEGRAM_API_KEY для bot
  4. Выполнить docker compose up -d bot
  5. Для выключения приложения docker compose down

Окружение проекта

About

Telegram Бот отслеживания изменений по ссылкам

Topics

Resources

Stars

Watchers

Forks

Packages