Как добиться асинхронных мутаций с помощью Apollo Gateway - PullRequest
0 голосов
/ 10 июля 2020

При использовании Apollo Gateway шлюз будет пересылать мутации непосредственно в соответствующую службу реализации. Такие запросы являются синхронными.

Есть ли способ, которым Apollo Gateway может публиковать sh все мутации брокеру сообщений, например rabbitmq, чтобы мы могли добиться асинхронной связи между шлюзом и реализующими сервисами?

1 Ответ

0 голосов
/ 12 июля 2020

В качестве пояснения к вашему вопросу: запросы не синхронные, а последовательные.

В отличие от запросов, которые спецификация GraphQL оставляет открытыми для «разрешения распараллеливания», мутации ДОЛЖНЫ выполняться в серия.

(Ссылки на Запрос и Мутация spe c

6.2.1 Запрос

...

Пусть данные будут результатом выполнения ExecuteSelectionSet (selectionSet, queryType, initialValue, variableValues) в обычном режиме (с возможностью распараллеливания).

6.2.2 Мутация

...

Пусть данные будут результатом последовательного выполнения ExecuteSelectionSet (selectionSet, mutationType, initialValue, variableValues).

Широко распространенный шаблон состоит в том, что ваша мутация должна «вернуться, когда она будет выполнена. , и подождите, пока не появятся эти данные ". Теоретически, однако, вы можете заставить свою мутацию запустить какое-то событие и просто ответить, сказав, что оно произошло. Затем вы можете использовать Подписку , чтобы определить, когда ответ был готов. Опять же, это не совсем «способ, которым обычно используют GraphQL», но теоретически вы могли бы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...