UserService — это 2-ой микросервис для 4-ой практической работы.
UserService/
├── Dependencies/ # Зависимости проекта, подключенные через NuGet
├── Properties/ # Конфигурационные файлы и параметры запуска
│ ├── appsettings.json # Основные настройки приложения (MongoDB, Kafka, логирование)
│ ├── appsettings.Development.json # Настройки для режима разработки
│ └── launchSettings.json # Настройки запуска приложения
├── Controllers/ # Контроллеры API
│ └── UsersController.cs # Обработчик запросов для работы с пользователями
├── Models/ # Модели данных приложения
│ ├── ApiResponse.cs # Модель данных для ответа от API
│ ├── MessageModel.cs # Модель данных для сообщений Kafka
│ ├── MongoDBSettings.cs # Модель для конфигурации подключения к MongoDB
│ └── UserModel.cs # Модель данных для пользователей
├── Services/ # Сервисы и обработка данных
│ └── UserService.cs # Сервис для работы с пользователями
├── Utils/ # Утилиты приложения
│ ├── KafkaProducer.cs # Реализация Kafka Producer для отправки сообщений
│ └── KafkaConsumer.cs # Реализация Kafka Consumer для обработки сообщений
└── Program.cs # Точка входа в приложение
-
Установи Docker Desktop, который я кинул в телегу.
-
Перезагрузи компьютер после установки.
-
Запусти Docker Desktop и сверни его.
-
Разархивируй файл
confluent_4.14.0_windows_amd64.zipв любую папку. -
Открой
cmd, перейди в папку сconfluent.exeс помощью командыcd. Запусти из подcmdconfluent.exe -
Запусти Kafka с помощью следующей команды:
confluent local start kafka -
Создай необходимые топики:
- Для подтверждений:
confluent local kafka topic create ObjectConfirmations --partitions 1 - Для запросов:
confluent local kafka topic create ObjectRequests --partitions 1
- Для подтверждений:
-
Сверни
cmd. -
Открой проект UserService, либо не открывай, похуй на него вообще.
-
Где взять логи кафки? В cmd:
docker logs -f <container_id_or_name>
-
Как посмотреть логи топиков кафки? Не ебу!
-
confluent local kafka stop<- В консоль после всех работ и можно закрывать Docker, Cmd
- .NET 8.0 (или новее)
- IDE с поддержкой .NET
- MongoDB (локальная или удалённая база данных)
- Kafka (локальный или удалённый сервер)
- Склонируй репозиторий:
git clone https://github.com/Nata-Practices/UserService.git
- Перейди в папку проекта:
cd UserService - Установи зависимости:
dotnet restore
- Собери проект:
dotnet build
- Запусти сервер:
dotnet run
- Приложение будет доступно по адресу
http://localhost:5137/swagger/index.html.
GET /api/users— получить всех пользователейPOST /api/users— создать нового пользователяGET /api/users/{id}— получить конкретного пользователя по idPUT /api/users/{id}— обновить конкретного пользователя по idDELETE /api/users/{id}— удалить конкретного пользователя по id
-
Producer:
- Отправляет подтверждение объекта в тему
ObjectConfirmations.
- Отправляет подтверждение объекта в тему
-
Consumer:
- Принимает сообщения из темы
ObjectRequests:- Сообщение содержит
Idобъекта (ключ) иUserId(значение). - Увеличивает поле
RegisteredObjectsдля соответствующего пользователя.
- Сообщение содержит
- Принимает сообщения из темы