Golang Balance Microservice Example
Пояснительная записка
Что было использовано
Основные структуры данных:
Balance - структура модели данных в БД
Task - структура получаемых заданий для воркеров
ErrorMessage - структура сообщения отправляемых при возникновении ошибки обновления
SuccessMessage - структура сообщения отправляемых при успешном обновлении
Очереди:
update-balance - топик для задач
dead-letter-queue - топик для сообщений об ошибках
success-letter-queue - топик для сообщений о выполненных заданиях
Механизм работы:
При запуске приложения, создаётся экземпляр BalancesConsumerGroup, после чего происходит
запуск Consumer'а, который получает задания из топика и запускает воркеров.
Воркер запускается в отдельной горутине и обрабатывает задачу.
В случае успешной обработки, сообщение отправляется в топик с выполненыыми заданиями
В случае ошибки, сообщение об этом отправляется в топик с ошибками
🚀 Docker-compose файлы:
docker-compose.yml - запускает postgresql, kafka, zookeper, kafdrop and migrate контейнеры
Команды для развертывания:
make local
make create_topics
make run
Kafdrop UI:
http://localhost:9000