Микросервисное приложение для отслеживания обновлений контента по ссылкам. При появлении новых событий уведомление отправляются через Telegram-бота.
- Проект написан на
Java 21с использованиемSpring Boot 3 - Приложение состоит из 2-х микросервисов:
scrapper- отслеживание обновлений, работа с базой данныхbot- API приложения через Telegram-бота
- Для работы с API Telegram используется библиотека pengrad/java-telegram-bot-api
- Микросервисы общаются между собой через
HTTP/Kafka(в зависимости от конфигурации) - Для хранения данных используется
PostgreSQLв связке с системой управления миграциями базы данныхLiquibase REST APIмодулей описан вOpenAPI-спецификациях, присутствует возможность тестирования черезSwagger- Работа с данными в
scrapperпроизводится с использованиемJDBC/JOOQ/JPA(в зависимости от конфигурации) - В каждом модуле используется механизм
Retry (Spring)иRate Limiting (Bucket4j)для HTTP-запросов (настройки конфигурируются) - Присутствует мониторинг метрик приложения с использованием
Prometheusи Web-UIGrafana - Github Actions настроен на автоматическую сборку образов
Docker - Присутствуют unit/integration-тесты с использованием
JUnit 5&Testcontainers
Образы модулей доступны на Github Container Registry:
docker pull ghcr.io/efler/telegram-scrapper-bot/scrapper:latest
docker pull ghcr.io/efler/telegram-scrapper-bot/bot:latest
Взаимодействие с приложением происходит через Telegram-бота (токен бота указывается через переменную окружения TOKEN)
Список команд:
/start- Зарегистрировать пользователя/help- Вывести окно с командами/track [link]- Начать отслеживание ссылки/untrack [link]- Прекратить отслеживание ссылки/list- Вывести список отслеживаемых ссылок/remove_me- Удалить свой аккаунт из базы данных
Бот поддерживает 'прозрачный' режим, конфигурация происходит через переменную окружения IGNORE_INCOME_UPDATES
Вся конфигурация контейнеров происходит через переменные окружения, сами модули конфигурируются через application.yml
Статистика проекта (плагин Statistic)
<<-- @Efler -->>
