Реактивный дизайн конечных точек

Я изучаю WebFlux. Wiki говорит, что реактивное программирование это:

Например, в параметрах императивного программирования a:=b+c будет означать, что a присваивается результат b+c в в момент вычисления выражения и позже значения b и/или c могут быть изменены не влияет на значение < сильный>а.

Однако в реактивном программировании значение a автоматически обновляется всякий раз, когда значения b и/или c сдача; программа не должна повторно выполнять предложение a:=b+c, чтобы определить присвоенное в настоящее время значение a.

В порядке. При воспроизведении пример вроде:

@RestController
public class PersonController {

    private final PersonRepository repository;

    public PersonController(PersonRepository repository) {
        this.repository = repository;
    }

    @PostMapping("/person")
    Mono<Void> create(@RequestBody Publisher<Person> personStream) {
        return this.repository.save(personStream).then();
    }

    @GetMapping("/person")
    Flux<Person> list() {
        return this.repository.findAll();
    }

    @GetMapping("/person/{id}")
    Mono<Person> findById(@PathVariable String id) {
        return this.repository.findOne(id);
    }
}
  • Размещаю 2 человека. (на хромированной странице 1)
  • Затем получить список всех лиц (на хромированной странице 2)
  • Затем добавьте еще одного человека (на хромированной странице 3)

Затем я возвращаюсь на страницу 2 (без обновления), я не вижу обновленного списка лиц, не так ли?

Кроме того, как здесь должны работать операции UPDATE/DELETE?


person Aleksey Kozel    schedule 06.11.2017    source источник


Ответы (1)


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

Реактивного программирования и реактивных потоков самих по себе недостаточно для создания такой инфраструктуры.

В вашем контроллере операции выполняются и значения публикуются реактивным способом: с поддержкой обратного давления и доступом к реактивному API для их составления. После обработки ответа JSON клиент не получает новые элементы с сервера.

Однако вы можете создать такую ​​систему, опубликовав события и установив постоянное соединение (например, SSE) между сервером и браузером.

person Brian Clozel    schedule 06.11.2017