Я ищу шаблон и существующие реализации для моей ситуации: у меня есть синхронный soa, который использует REST API, фактически я реализую удаленный вызов процедуры с помощью REST.И у меня есть несколько медленных работников, которые обрабатывают запросы в течение значительного времени (около 30 секунд), и из-за некоторых лицензионных ограничений для некоторых запросов я могу обрабатывать их только последовательно (см. настройка системы ).
Каковы рекомендуемые способы осуществления связи для такого случая?
Как я могу смешать синхронную и асинхронную связь в ситуации, когда потребитель находится за брандмауэром, и я не могу легко отправить ему уведомление о выполненных задачах, и я не смогу позволить потребителю использовать мой брокер сообщений, если он у меня есть??
Рабочие реализованы на Python с использованием Flask и gunicorn.На данный момент я использую синхронные интерфейсы REST и допускаю задержку, так как у меня были только быстрые рабочие.Я посмотрел на Kafka и RabbitMq, и они подойдут для взаимодействия на стороне сервера, однако, как производитель взаимодействует с потребителем?
Если потребитель запускает запрос API, мой производитель может вернуть код 202, то как производитель должен уведомить потребителя о том, чторезультат налицо?Потребуется ли потребителю опросить производителя о результатах?
Также, если я использую посредники сообщений и мой шлюз действует от имени потребителя, у него должен быть реестр запросов (у меня уже есть GUID для каждого запроса сейчас) и результаты.Какой подход вы бы порекомендовали для его реализации?