Как реализовать связь между потребителем и производителем с быстрыми и медленными работниками? - PullRequest
0 голосов
/ 30 мая 2019

Я ищу шаблон и существующие реализации для моей ситуации: у меня есть синхронный soa, который использует REST API, фактически я реализую удаленный вызов процедуры с помощью REST.И у меня есть несколько медленных работников, которые обрабатывают запросы в течение значительного времени (около 30 секунд), и из-за некоторых лицензионных ограничений для некоторых запросов я могу обрабатывать их только последовательно (см. настройка системы ).

Каковы рекомендуемые способы осуществления связи для такого случая?

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

Рабочие реализованы на Python с использованием Flask и gunicorn.На данный момент я использую синхронные интерфейсы REST и допускаю задержку, так как у меня были только быстрые рабочие.Я посмотрел на Kafka и RabbitMq, и они подойдут для взаимодействия на стороне сервера, однако, как производитель взаимодействует с потребителем?

Если потребитель запускает запрос API, мой производитель может вернуть код 202, то как производитель должен уведомить потребителя о том, чторезультат налицо?Потребуется ли потребителю опросить производителя о результатах?

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

1 Ответ

0 голосов
/ 30 мая 2019

Producer - агент, который генерирует сообщение. Consumer - агент, который может обрабатывать сообщение и реализовывать логику для обработки сообщения enter image description here

...