У меня есть система, которую я собираюсь переоборудовать в бэкэнд с интеграцией Spring.
Некоторые из шаблонов в этой системе относятся к одному и тому же веб-сервису и / или HTTP-серверу (у меня есть оба) с несколькими запросами и немного разными параметрами. Затем результаты объединяются и представляются пользователю.
У меня он успешно работает в синхронном режиме, когда запрос поступает через шлюз, «разбивается» на сообщения, содержащие значение ключа для каждого вызова (вызов с A, вызов с B, вызов с XYZ). Затем каждое сообщение отправляется на шлюз исходящей почты HTTP, выполняется вызов и возвращается. Затем результаты объединяются и отправляются обратно через шлюз.
Я борюсь с тем, чтобы выполнять эти HTTP-вызовы асинхронно. Текущая система использует Futures для выполнения каждого вызова в отдельном потоке. Хотелось бы такой же выкройки.
Я думаю, что мне нужно создать второй шлюз, который обертывает исходящий шлюз HTTP, и использовать возвращаемое значение для создания асинхронного вызова. Однако я не уверен, как это будет работать с агрегацией, и в этом есть ощущение, что должен быть более чистый способ. У меня не было возможности использовать Spring Integration 3 года, поэтому я пытаюсь все заново изучить.
Я что-то упускаю или это как нужно делать?