Проблема, с которой я столкнулся:
Что бы я ни пробовал с помощью различных руководств по использованию REST API Spring Reactive (WebFlux), я не могу заставить его работать. Когда я сначала вызываю свою конечную точку, я могу получить результаты из коллекции MongoDB. Однако всякий раз, когда я делаю обновление записи документа или добавляю новый документ, он не обновляется через поток текстовых событий. Каждый раз мне приходится снова вызывать конечную точку, чтобы получить новые результаты.
Настройка:
В настоящее время у меня следующая установка:
- Spring Cloud Gateway (за которым я запускаю разные)
- Spring Boot Service, содержащий RestControllers (называя это основной службой)
Я использую Spring Webflux, Spring Cloud Gateway и Spring ReactiveMongoRepository.
Зависимости включали pom.xml для основной службы Spring Boot:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-oauth2-jose</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb-reactive</artifactId>
</dependency>
Код для ReactiveMongoRepository:
@Repository
public interface TestRepository extends ReactiveMongoRepository<TestIntegration, String> {
@Query(("{'userId': ?0}"))
Flux<TestIntegration> findbyUserId(String userId);
}
Код для остального контроллера:
@GetMapping(value = "main/integrations", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<TestIntegration> retrieveIntegrations(ServerWebExchange exchange) {
return testRepository.findAll();
}
Согласно каждому прочитанному мной руководству / руководству, это должно работать в соответствии с этим подходом. Кто-нибудь испытал это на себе или мог бы помочь в этом вопросе? В настоящее время застрял на этом несколько дней ...
Just wondering which way is the right way to search for in order to make this work
запрашивает недопустимую документацию, учебные пособия и / или библиотеки. SO - это форум по программированию для очень конкретных вопросов с одним конкретным ответом. На ваш вопрос дан ответ. Для справки в будущем meta.stackoverflow.com/questions/261592/ - person Toerktumlare   schedule 22.01.2021