Spring Cloud Gateway Filter Factory для пожарной и забытой модели - PullRequest
0 голосов
/ 19 апреля 2020

Я изучаю Spring Cloud Gateway фильтрзавод, который может принять запрос и вернуть статус SUCCESS http вызывающей стороне. После этого перешлите его к месту назначения на основе заводской конфигурации фильтра.

caller ---> Spring Cloud Gateway
      <--- Request accepted 
           Spring Cloud Gateway  ---> Destination

Я не нашел никакого решения для этого в Spring do c. Существуют ли фабрики фильтров для реализации этой модели? если нет, то какие-либо предложения, как решить эту проблему?

Примечание. Причина, по которой мы хотим разорвать связь в Spring Cloud Gateway, заключается в том, что время отклика сервера назначения очень велико, и вызывающий абонент не может ждать так долго продолжительность.

Любое предложение будет оценено.

1 Ответ

1 голос
/ 19 апреля 2020

Так что в общем решение может быть следующим. Вам нужно перенаправить вызов на какую-то конечную точку, которая поместит запрос для дальнейшей обработки и т. Д. c. Эта часть может быть реализована с использованием подхода JMS, это может быть любая реализация, такая как ActiveMQ, RabbitMQ et c. Вы должны выбрать брокера в соответствии с вашими потребностями и ожиданиями.

Когда запрос приходит со шлюза, вы перенаправляете на конечную точку и просто помещаете сообщение в очередь, другая служба прослушивает сообщения из этой очереди и обрабатывает их.

Другим подходом является использование пакетного задания sprint для обработки некоторой логики c et c. Когда клиент выполняет вызов, он проходит через шлюз, затем шлюз перенаправляет запрос на конечную точку микросервиса, а затем вы сохраняете запрос в базе данных и возвращаете клиенту 202. Затем, используя пакетное задание через cron process logi c.

Преимущества использование первого подхода - потеря связи между микросервисами, асинхронная обработка и простота масштабирования.

При работе с пружинным пакетным заданием или при любом планировщике могут возникнуть трудности при масштабировании, поскольку необходимо каким-то образом запускать только одно задание одновременно для нескольких экземпляры. Для решения этой проблемы вы можете использовать библиотеку schedlock.

В случае политики повторных попыток обработки, когда запрос был принят, MOM (промежуточное программное обеспечение, ориентированное на сообщения) будет проще, в случае неудачной транзакции для него предусмотрены некоторые конфигурации повторных попыток.

Использование весенних пакетных заданий вам нужно управлять состоянием запроса в базе данных и не запускать запрос с состоянием «обработано» и т. д. c.

...