Я начал продумывать прототип архитектуры для системы, которую я хочу построить на основе функций Azure и сетки событий.
Чего я хотел бы добиться, так это иметь единую точку входа (Функция)куда различные внешние поставщики будут отправлять HTTP-запросы Webhook (GET).Назначение функции - добавить некоторые метаданные в полезную нагрузку и опубликовать пакет (метаданные + исходная полезная нагрузка от поставщика) в таблице событий.Сетка событий затем запустит другую функцию, цель которой состоит в том, чтобы ответить на исходный HTTP-запрос Webhook, например, с кодом HTTP статуса 204.
На приведенной ниже диаграмме представлена упрощенная версия архитектуры. Сетка событий будетКонечно, публиковать события и для других функций, но ради простоты…
Проблема, с которой я сейчас сталкиваюсь, заключается в том, что контекст исходного HTTP-запроса Webhook от внешнего поставщика теряется после того, как первая функциясрабатывает.Попытка отправить контекст как часть полезной нагрузки события в Event Grid выглядит как анти-шаблон, и, несмотря на это, я не могу заставить его работать (функция .done()
где-то теряется в событии).Попытка просто использовать context.res = {}
и context.done()
в последней функции не будет отвечать на исходный HTTP-запрос поставщика.
Есть идеи здесь?Является ли вся архитектура одним большим анти-паттерном - будет ли он работать?Или я должен немедленно отправить HTTP-ответ в первой функции, вызванной запросом поставщика?
Спасибо!