Я размышлял над проектом, который включает:
- Клиент, делающий запрос POST к конечной точке
- Затем публикуется маршрут (из конструктора, который возвращает запрос) объект, который я преобразую) в канал Redis. например,
( {request: String, transid: String, data: Object } )
Другой сервер, прослушивающий этот канал, анализирует JSON -> переключает ключ запроса с объекта Имеет ли функции, такие как проверка учетных данных и т. Д .; Вызывает класс, который возвращает предварительно созданный объект ответа, который преобразуется в str и отправляется обратно по тому же (или другому каналу) обработчику маршрута (который отправил исходный запрос по каналу), который ожидает в асинхронном режиме ожидания (в данном случае fastify.), например,
( { "transid": "1234-Abcd-5678-abcde", "state": Boolean, data: <data> } )
Временная шкала
Обработчик маршрута отправляет запрос Pub в Redis Listener:
( {request: "auth", transid: "1234-Abcd-5678-abcde", data: { email: "test@test.com", "password": "pass" } )
Подписанный прослушиватель на другом сервере выполняет внутреннюю проверку учетных данных
Публикует обратно на канал Redis
( {transid: "1234-Abcd-5678-abcde", state: false, data: { error: "Incorrect" } } )
Обработчик маршрута отвечает клиенту, используя методы библиотеки c, то есть request.send (200)
Моя проблема в том, что я не совсем понимаю, как мне достичь результата шага 4 в приведенной выше временной шкале; т. е. возможно ли даже ожидать сообщения в обработчике маршрута? Я подошел очень близко, но я задаюсь вопросом, является ли это практичным способом go о вещах, когда я проектирую что-то, что может масштабироваться. (Пользователь отправляет сведения в / конечную точку, обработчик маршрута / конечной точки публикует сообщение json на канал, внешний сервер прослушивает сообщение и отправляет его в оператор switch, т.е. [switch (data.request)], который вызывает функцию, которая выполняет операция БД, а затем использует конструктор класса, чтобы сгенерировать объект для отправки обратно по каналу redis в обработчик маршрута, который будет ожидать ответа, на который затем ответит клиент.)
Могу я спросить если у кого-нибудь есть мнения по этому поводу?