Сервис получает сообщения из Kafka, сохраняет их в PostgreSQL, кэширует в памяти и отдает через HTTP API.
Также есть простой фронт на HTML для поиска заказа, DLQ для невалидных сообщений.
- Go — основной сервер
- PostgreSQL — база данных
- Kafka — очередь сообщений
- Docker Compose — запуск
- HTML — фронтенд для просмотра заказа
docker compose up -d --builddocker compose psdocker compose logs -f appdocker compose up generatorhttp://localhost:8080Запуск теста
go test ./docker compose exec kafka bash -lc 'kafka-console-producer --bootstrap-server kafka:9092 --topic orders'После вставляем JSON заказ в одну строку
Пример:
curl http://localhost:8080/order/test124{
"order_uid": "test124",
"track_number": "TRACK124",
"entry": "WBIL",
"delivery": { "name": "John Doe", "city": "New York" },
"payment": { "transaction": "txn124", "amount": 1500, "currency": "USD" },
"items": [
{ "rid": "RID123", "name": "T-shirt", "brand": "Nike", "price": 500 },
{ "rid": "RID124", "name": "Sneakers", "brand": "Adidas", "price": 800 }
]
}cmd/
app/
generator/
project/
cache/
consumer/
database/
http/
model/
migrations/
docker-compose.yml
Dockerfile- Подключение к Kafka
- Транзакционное сохранение в PostgreSQL
- Валидация входящих данных
- DLQ
- In-memory cache
- Восстановление кэша при старте
- HTTP API
- HTML интерфейс
- Генератор тестовых данных
- Docker Compose
- SQL Миграции
- Unit-тесты