Команда REST API с управляемой событиями хореографией - PullRequest
0 голосов
/ 10 мая 2019

Я пытаюсь спроектировать систему в стиле управляемой событиями архитектуры, также пытаюсь предоставить REST API для отправки команд / запросов. Я решил использовать Кафку в качестве брокера сообщений. Хореография, которую я пытаюсь создать, такова: enter image description here

Мне очень непонятно, как реализовать объединение событий:

  1. биллинг-сервис должен начать создавать пользователя только тогда, когда он получает событие создания пользователя (1) и учетная запись создана (2)
  2. api-шлюз должен возвращать результат клиенту только после того, как и аккаунт, и биллинговая служба закончили свою обработку (2 и 3)

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

p.s. Я использую Spring Boot и Spring Cloud Stream.

1 Ответ

1 голос
/ 10 мая 2019

Обмен сообщениями запросов / ответов на стороне клиента возможен с помощью Spring-Cloud-Stream, но он немного сложен, потому что он не предназначен для этого, он предназначен для обработки однонаправленных потоков.

Было бы лучше использовать spring-kafka ( ReplyingKafkaTemplate ) или spring-интеграцию-kafka ( Исходящий шлюз ) для запроса / ответа на стороне клиента.

На стороне сервиса вы можете использовать @StreamListener (spring-cloud-stream), @KafkaListener или входной шлюз интеграции с пружиной.

...