Многомодульное Maven
Java
приложение с использованием Spring Boot
.
Приложение позволяет парсить различные ресурсы, например GitHub
или StackOverflow
, и присылать уведомление
об обновлении в телеграмм бота, через которого происходит управление отслеживаемыми ссылками.
Общение сервисов происходит через REST
.
Отправление обновлений отслеживаемых ресурсов происходит через RabbitMQ
,
для которого также реализован паттерн Dead Letter Queue
.
Существуют реализации доступа к данным через JDBC
и SpringData + Hibernate
.
Для создания базы данных используется механизм миграций Liquibase
.
Обе реализации покрыты модульными и интеграционными тестами с использованием тест-контейнеров
.
Обработка ссылок происходит в отдельном модуле, где обработчики собраны по паттерну Цепочка-обязанностей
.
С использованием этого паттерна также созданы обработчики команд в сервисе с ботом.
Реализован паттерн с использованием Reflection
.
Для модулей bot и scrapper API реализовано по спецификации OpenAPI
. Для обоих проектов настроен Swagger.
Для модулей написаны Dockerfile
.
Все модули компилируются независимо от платформы в Docker контейнерах.
Для сборки всего проекта создан docker-compose
файл.
Для мониторинга настроены Grafana
и Prometheus
. В Grafana создана доска Tinkoff-scrapper.
Для проекта создан Checkstyle
. Также настроен CI/CD
на основе сервиса GitHub Actions
,
где собирается проект, создается Docker Image
проекта и выгружается в GitHub Packages
,
также там проверяется Checkstyle.
Для запуска потребуется указать переменные окружения:
BOT_TOKEN
- токен телеграмм бота (Можно получить у BotFather)GITHUB_TOKEN
- токен GitHub аккаунта
Запуск через докер:
docker compose up -d
localhost:8080
- Сервис с телеграмм ботомlocalhost:8090/metrics
- Prometheus metrics сервиса с телеграмм ботомlocalhost:8080/swagger-ui.html
- Swagger сервиса с телеграмм ботомlocalhost:8081
- Парсер-сервисlocalhost:8081/swagger-ui.html
- Swagger парсер-сервисаlocalhost:8091/metrics
- Prometheus metrics парсер-сервисаlocalhost:3000
- Grafana с добавленной доской Tinkoff-scrapper