Здравствуйте, Gattaka, Вы писали:
G>Наверное многие сталкивались с проблемой и есть какие-то решения уже готовые. Нужно сделать маршрутизацию. То есть микросервис 1 сделал свою работу и пульнул сообщение в очередь что готово. На это сообщение должен реагировать второй и третий. На результаты работы второго реагирует четвертый и т.д. Как делать такую маршрутизацию? Это похоже на workflow и по факту ей и является.
В SOA (которая Service-oriented architecture) есть два подхода к тому, как делается связка сервисов:
Service choreography — когда каждый сервис передает управление следующему, тот следующему и т.д.. При этом нет какого центрального узла, который бы следил за тем, кто когда и с какими данными получает управление.
Service orchestration — когда есть центральный сервис (business-process management, workflow, ESB, ...) который выстраивает весь процесс работы: там, обычно есть некое описание (часто — графическое) последовательности взаимодействия сервисов (причем нормальная практика, когда процесс инициируется обращением к какому-то сервису)
Собственно, пляшите отсюда.
Если вам нужны названия конкретных библиотек/продуктов, то надо сначала узнать ваши условия (чем пользуетесь, где хостите, ...).
P.S. По моим ощущениям хореография куда сложнее в поддержке, если число сервисов начинает расти, у оркестровки, за счет того, что весь процесс описан в одном месте, гораздо проще делать сквозные изменения. Но зато этот центральный узел обычно становится узким местом.