Info
Проект WIP, поэтому описание с пустотами.
SVFM adapter
Question
Есть система - какая? Что в ней особенного, что потребовался адаптер?
Есть ряд требований, которые идеально группируются именно в адаптер.
Перекладывалка жсонов из Rabbit в REST системы, которой требуется дорогая доработка от вендора чтобы научить её подключаться к нескольким рэббитам и разным Virtual Host рэббита. По сути это адаптер для целевой системы. Пропадёт целевая система, пропадёт нужда и в этом адаптере.
Я сделал паралелелизм, а не concurrency за счёт поднятия всей инфры
Сложность в том что источников 15 штук и приёмников 15 штук. REST в Spring на аннотациях не покатит - придётся хардкодить. Программно сделал слушателей и целевые ендпоинты, без хардкода. Программное конформное конфигрурирование ендпоинтов под то что задекларировано в конфиге.
Целевая система не умеет ходить по рестам за данными, поэтому добавил дообогащение.
ну и Circuit Breaker, который выключает Rabbit Listener чтобы fail-fast’ом падало и не аффектило целевую систему.
Question
По дефолту Spring не умеет чего?
Spring как ни странно тоже из коробки не умеет в кластеры, поэтому тут и пригодилось вышеописанное программное декларирование ендпоинтов.
One-go achievements
TBD
Role
TBD
Repetitive practices
TBD
Technicalities
- CCU: 5000 RPS (synthetic), 2 инстанса баланированных F5;
- Архитектура: Hexagonal Architecture, разделение ответственностей, модульный микросервис, DDD;
- patterns: active-active, adapter, , singleton, factory, tail-based sampling, AMQP;
Teamplay
TBD
Stack
- RabbitMQ
- Spring (core, web, AOP), resilience4j;
- Docker compose;
- SQL via Posgres 17, liquibase, hibernate;
- micrometer, Grafana;
- slf4j, log4j2;
- jobrunnr
- TeamCity, git, bitbucket, SonarQube;
| Technology | Started | Ended |
|---|---|---|
| java 21 | 2025-10-15 | — |
| slf4j + log4j2 | 2025-10-15 | — |
| SonarQube | 2025-10-15 | — |
| Spring AOP | 2025-10-15 | — |
| Spring boot 3 | 2025-10-15 | — |
| Spring IoC | 2025-10-15 | — |
| Docker compose | 2025-10-15 | — |
| git | 2025-10-15 | — |
| gradle | 2025-10-15 | — |
| Grafana | 2025-10-15 | — |
| Jackson | 2025-10-15 | — |
| Java 21 (w/ concurrency API) | 2025-10-15 | — |
| JUnit | 2025-10-15 | — |
| linux | 2025-10-15 | — |
| Liquibase | 2025-10-15 | — |
| micrometer | 2025-10-15 | — |
| Mockito | 2025-10-15 | — |
| resilience4j | 2025-10-15 | — |
| SQL | 2025-10-15 | — |
| Wiremock | 2025-10-15 | — |