Есть ли очереди между WebFilters - PullRequest
0 голосов
/ 07 января 2019

Я планирую использовать webflux для создания набора микро-сервисов. Каждый сервис имеет набор этапов обработки - набор веб-фильтров для предварительной обработки, фильтр / этап для выполнения некоторых операций ввода-вывода (который может стать очень медленным) и набор фильтров для выполнения постобработки. Каждому фильтру после обработки требуется результат операции ввода-вывода для выполнения своей работы. Как это работает под капотом? Позволяет ли структура автоматически запускать фильтры при наличии результатов исходящего фильтра?

Дополнительная информация

Допустим, у меня есть конвейер фильтров. Первый фильтр выполняет удаленный вызов API - который может быть медленным. Второй фильтр использует результаты этого вызова API. В конвейере асинхронной обработки на основе цикла событий это может быть смоделировано с использованием одной или нескольких очередей и пула потоков. Входящие запросы будут помещены в очередь и будут обработаны рабочим потоком. Поскольку на первом этапе конвейера выполняется вызов API, этот поток будет выполнять вызов API и немедленно возвращаться, не дожидаясь результата. Когда результат будет получен, он снова будет помещен в очередь, а затем будет занят рабочим потоком и отправлен во второй фильтр, который может использовать результат вызова API. Без фреймворка мы правильно настроим очереди, потоки и обработчики сообщений, чтобы во время выполнения происходила последовательность событий. Я просто хотел понять, как это работает в webflux.

...