Микросервисное приложение для отслеживания обновлений контента по ссылкам. При появлении новых событий уведомление отправляются через 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 -->>