- Данный проект - Spring boot приложение c REST архитектурой, представляет собой сервис управления паспортами.
- Поддерживаются следующие методы:
- /save, сохранить данные паспорта;
- /update{id}, обновить данные паспорта;
- /delete{id}, удалить данные паспорта;
- /find, загрузить все паспорта;
- /find{series}, загрузить паспорта с заданной серией;
- /unavailable, загрузить паспорта чей срок вышел;
- /find-replaceable, загрузить паспорта, которые нужно заменить в ближайшие 3 месяца.
- Методы сервиса может вызывать другой сервис, используя RestTemplate.
- Реализована имитация сервиса рассылки почты. Он выводит сообщения в консоль.
- Есть возможность периодичной проверки просроченных паспортов. При нахождении таковых отправляется запрос к сервису рассылки почты, который отвечает, что паспорт просрочен и его нужно заменить.
- Для взаимодействия использована Kafka.
- Проект собран через docker-compose.
- В качестве БД используется PostgreSQL.
- Для проверки приложения используется Postman.
Для сборки проекта необходимо:
- Установить JDK 14.
- Установить Maven.
- Установить Postman.
- Установить сервер БД PostgreSQL, задать логин - postgres, пароль - password.
- Скачать исходный код проекта.
- Создать в pg_Admin БД passport.
- Открыть Query Tool для созданной БД и запустить SQL-скрипт
update_001.sql
из папкиdb
. - Перейти в корень проекта, где лежит файл
pom.xml
. - Собрать проект командой
mvn -DskipTests=true package
. При успешной сборке должна появиться папка target cpassport-2.jar
. - Копируем
passport-2.jar
в *c:\Program Files\Java\jdk-14.0.1\bin* - Для установки Kafka требуется предварительно установить Zookeeper, который позволяет координировать действия в системе. Необходимо скачать архив, распаковать его в папку C:\Tools, прописать пути для Zookeeper в Path.
Запускаем приложение java -jar passport-2.jar
и Kafka run-all.bat
.
В консоль выводится сообщение о паспорте, который скоро просрочится:
Для проверки работы приложения будем использовать Postman, чтобы посылать соответствующие HTTP-запросы на REST-сервисы.
Получим список всех паспортов:
Обновим дату срока годности:
Добавим еще паспорт:
Запросим информацию о паспортах, которые нужно заменить: