Я пытаюсь спроектировать систему в стиле управляемой событиями архитектуры, также пытаюсь предоставить REST API для отправки команд / запросов. Я решил использовать Кафку в качестве брокера сообщений.
Хореография, которую я пытаюсь создать, такова:
![enter image description here](https://i.stack.imgur.com/Kmpai.png)
Мне очень непонятно, как реализовать объединение событий:
- биллинг-сервис должен начать создавать пользователя только тогда, когда он получает событие создания пользователя (1) и учетная запись создана (2)
- api-шлюз должен возвращать результат клиенту только после того, как и аккаунт, и биллинговая служба закончили свою обработку (2 и 3)
Я знаю, что мог бы использовать другие протоколы на стороне клиента (например, WebSockets), но я предпочитаю не делать этого, потому что мне нужно будет предоставить такой API сторонней организации. Я также мог бы сделать асинхронный вызов клиента и опросить, чтобы проверить, был ли запрос завершен, но он кажется очень сложным для управления.
Каков предлагаемый способ реализации такого взаимодействия?
p.s. Я использую Spring Boot и Spring Cloud Stream.