Необходимо создать проект, состоящий из двух отдельных пакетов. Каждый пакет представляет собой микросервис, который логирует работу в консоль. Для создания сервисов требуется использовать язык Typescript + NestJS + Node.js
Сервис 1 (worker):
- Написан с использованием NestJS
- Транспорт по TCP
- Имеет 2 метода:
- DoHeavyJob Принимает на вход в качестве аргумента { count: number }, возвращает стрим из count сообщений. Каждое сообщение это произвольное число
- DoLightJob Принимает на вход в качестве аргумента { data: number }, возвращает его же, возведённое в квадрат Сервис 2 (bff):
- Написан с использование NestJS
- Общается с сервисом worker по TCP
- Предоставляет GraphQL интерфейс для внешнего пользователя
- Имеет 1 метод:
- DoJob Принимает на вход в качестве аргумента { count: number, type: 'heavy' } | { data: number, type: 'light' }. В зависимости от type вызывает либо DoHeavyJob либо DoLightJob метод сервиса worker. В обоих случаях ждёт, когда получит все результаты выполнения метода. Возвращает массив результатов (для light - это массив из 1 элемента, для heavy это массив из count элементов).