Необходимо написать 2 микросервиса.
Второй сервис - сервис для хранения json с информацией о транзакций (формат json не важен - для нас это просто очень длинная строка) Поддерживаемые сущности и их поля: Транзакция
- Идентификатор первичного ключа
- Ключ идемпотентности
- Строка с json
Необходимые операции (эндпоинты):
- Загрузить информацию о транзакции (с проверкой на идемпотентность)
Нефункциональные требования:
- Java 11, spring boot (любой версии)
- Каждый сервис - REST CRUD (тело запроса и ответа - json)
- Работа с БД: spring data jpa (hibernate) (in memory bd или postgres). Для создания бд использовать liquibase.
- Реализовать единый формат исключений для REST (exception handler)
- Реализовать метрику: подсчет количества обращений на каждый эндпоинт (Actuator)
- Реализовать аудирование: аудировать все get запросы (3 события аудита - "Начало операции", "Окончание операции", "Операция прервана". Формат сообщения - любой). Аудит писать в бд. Аудит должен быть не транзакционным (Запись аудита на начало и конец должны выполняться в отдельных транзакциях а не в транзакции операции бизнес-процесса).
- Реализовать логгирование (log4j). Логгирование достаточно вести только для блоков catch на уровне error. Запись лога писать в файл на диске.
- Реализовать доступ к эндпоинтам с использованием jwt токена. (Достаточно проверять наличие строки Bearer <много_рандомных_букв> и авторизироваться как anonimus)
- Все сервисы - stateless
- Допустимо использования lombok
- Сервис должен имплементировать подход controller - service - repository