Я хочу создать микросервис Spring, который получает HTTP-запросы с определенными данными (скажем, User
) и уведомляет другой микросервис о любых изменениях в указанных данных.
Я видел учебные пособия по Spring Mono и Flux где определена конечная точка, возвращающая объект Mono
/ Flux
, но обычно они делают что-то вроде этого (источник: https://dzone.com/articles/event-streaming-using-spring-webflux):
@GetMapping(value = "/temperatures", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<Integer> getTemperature() {
Random r = new Random();
int low = 0;
int high = 50;
return Flux.fromStream(Stream.generate(() -> r.nextInt(high - low) + low)
.map(s -> String.valueOf(s))
.map(s -> Integer.valueOf(s))
.delayElements(Duration.ofSeconds(1));
}
Я бы хотел чтобы иметь возможность выставить конечную точку, на которую может подписаться другая служба, и вручную вызвать метод для отправки события. Например, если у меня есть конечная точка «Добавить пользователя»:
@PostMapping
public ResponseEntity<User> addUser(@RequestBody @Valid User user) {
...
notifyOtherServices(user);
...
}
И notifyOtherServices(User user)
должен выдать объект Mono с данными пользователя, чтобы уведомить другие службы об изменении пользователя.
Я сделал нечто подобное с брокером сообщений, таким как RabbitMQ или Kafka, но я не хочу развертывать отдельное приложение.