Spring webflux dynamici c значения, обработка событий - PullRequest
0 голосов
/ 31 марта 2020

Я уже некоторое время пользуюсь Spring-Web, но я относительно новичок в webflux и реактивном программировании в целом. Я ищу некоторую помощь / разъяснение о том, как действовать.

У меня есть Spring API, который получает данные от шкалы (USB-устройства), которую я хочу опубликовать sh в конечной точке. Я хотел бы, чтобы это была динамическая конечная точка c, которая показывает вес в реальном времени. В настоящее время он работает так, что при изменении веса весов он запускает weightEvent. Благодаря использованию этих событий и прослушивателю событий создается очередь со списком весов на момент запуска события. Это реализация, основанная на аппаратном обеспечении и его библиотеке, и я не имею никакого контроля над этим аспектом.

В частности, я пытаюсь создать конечную точку, которая даст текущий вес и будет динамически изменяться, если больше веса добавлено в шкалу.

Во-первых, я немного не уверен, стоит ли мне использовать моно или флюс. Меня интересует только один элемент, но значение этого элемента постоянно меняется, поэтому действительно ли это один элемент или каждое изменение значения - это новый элемент, требующий изменения потока, а не моно?

Я понимаю У меня должен быть контроллер, который возвращает Flux / Mono

public Flux<Weight> getWeight() {
   return Flux <not sure what else goes here>
}

В классе обслуживания у меня также есть отдельные методы для события

public void weightEventOccurred(WeightEvent weightEvent) {

}

Моя мысль состоит в том, чтобы создать очередь или List<Weight> и для каждого события веса я добавляю вес в очередь, но я не уверен, каким образом я затем направляю или публикую sh эти значения в моей конечной точке.

...