Я собираюсь использовать редис-реактив в весенней загрузке.Однако весь существующий код - это код, который работает в режиме webmvc.Есть ли какие-либо проблемы при попытке использовать redis-реактивный с webmvc вместо webflux?В сервлете 3.1 он работает асинхронно, хотя webflux не используется.
Это пример кода.Пожалуйста, позвольте мне указать, есть ли что-то, что я не знаком с асинхронной разработкой методов.Если вы используете реактивный-redis с webmvc вместо webflux, пожалуйста, дайте мне знать, в чем проблема.
пружинная зависимость
compile('org.springframework.boot:spring-boot-starter-data-redis-reactive')
compile("org.springframework.boot:spring-boot-starter-web")
пример кода
@RestController
public class CoffeeController {
private final ReactiveRedisOperations<String, Coffee> coffeeOps;
private final ReactiveRedisConnectionFactory factory;
WebClient client = WebClient.create();
public CoffeeController(ReactiveRedisConnectionFactory factory, ReactiveRedisOperations<String, Coffee> coffeeOps) {
this.factory = factory;
this.coffeeOps = coffeeOps;
}
@GetMapping("/coffees")
public Flux<Coffee> all() {
return coffeeOps.keys("*")
.flatMap(coffeeOps.opsForValue()::get);
}
}
Поток выполнения запроса журнала результатов -> nio-8080-exec-3
рабочий поток redis -> ioEventLoop-4-1
поток ответов -> nio-8080-exec-4
2019-07-05 13:31:32.788 TRACE 38376 --- [nio-8080-exec-3] o.s.b.w.s.f.OrderedRequestContextFilter : Bound request context to thread: org.apache.catalina.connector.RequestFacade@1f500e3e
2019-07-05 13:31:32.788 TRACE 38376 --- [nio-8080-exec-3] o.s.web.servlet.DispatcherServlet : GET "/coffees", parameters={}, headers={masked} in DispatcherServlet 'dispatcherServlet'
2019-07-05 13:31:32.789 TRACE 38376 --- [nio-8080-exec-3] o.s.b.f.s.DefaultListableBeanFactory : Returning cached instance of singleton bean 'coffeeController'
2019-07-05 13:31:32.789 TRACE 38376 --- [nio-8080-exec-3] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public reactor.core.publisher.Flux<hello.Coffee> hello.CoffeeController.all()
2019-07-05 13:31:32.789 TRACE 38376 --- [nio-8080-exec-3] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: []
2019-07-05 13:31:32.789 DEBUG 38376 --- [nio-8080-exec-3] o.s.w.c.request.async.WebAsyncManager : Started async request
2019-07-05 13:31:32.790 DEBUG 38376 --- [nio-8080-exec-3] o.s.web.servlet.DispatcherServlet : Exiting but response remains open for further handling
2019-07-05 13:31:32.790 TRACE 38376 --- [nio-8080-exec-3] o.s.b.w.s.f.OrderedRequestContextFilter : Cleared thread-bound request context: org.apache.catalina.connector.RequestFacade@1f500e3e
2019-07-05 13:31:32.792 DEBUG 38376 --- [ioEventLoop-4-1] o.s.w.c.request.async.WebAsyncManager : Async result set, dispatch to /coffees
2019-07-05 13:31:32.793 TRACE 38376 --- [nio-8080-exec-4] o.s.web.servlet.DispatcherServlet : "ASYNC" dispatch for GET "/coffees", parameters={}, headers={masked} in DispatcherServlet 'dispatcherServlet'
2019-07-05 13:31:32.793 TRACE 38376 --- [nio-8080-exec-4] o.s.b.f.s.DefaultListableBeanFactory : Returning cached instance of singleton bean 'coffeeController'
2019-07-05 13:31:32.793 TRACE 38376 --- [nio-8080-exec-4] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public reactor.core.publisher.Flux<hello.Coffee> hello.CoffeeController.all()
2019-07-05 13:31:32.793 TRACE 38376 --- [nio-8080-exec-4] s.w.s.m.m.a.RequestMappingHandlerAdapter : Resume with async result [[Coffee(id=44d68449-4d3b-44f2-b117-7018f7eb434b, name=Black Alert Redis), Coffee(id=4e9f48a0-4cd4-418f-8336-6a638f501ba7, name=Darth Redis), Coffee(id=71019626-6ad2-47d0-a1a5-f619f06f9f2c, name=Jet Black Redis)]]
2019-07-05 13:31:32.793 TRACE 38376 --- [nio-8080-exec-4] dlerMethod$ConcurrentResultHandlerMethod : Arguments: []
2019-07-05 13:31:32.793 DEBUG 38376 --- [nio-8080-exec-4] m.m.a.RequestResponseBodyMethodProcessor : Using 'application/json', given [*/*] and supported [application/json, application/*+json, application/json, application/*+json]
2019-07-05 13:31:32.793 TRACE 38376 --- [nio-8080-exec-4] m.m.a.RequestResponseBodyMethodProcessor : Writing [[Coffee(id=44d68449-4d3b-44f2-b117-7018f7eb434b, name=Black Alert Redis), Coffee(id=4e9f48a0-4cd4-418f-8336-6a638f501ba7, name=Darth Redis), Coffee(id=71019626-6ad2-47d0-a1a5-f619f06f9f2c, name=Jet Black Redis)]]
2019-07-05 13:31:32.794 TRACE 38376 --- [nio-8080-exec-4] o.s.web.servlet.DispatcherServlet : No view rendering, null ModelAndView returned.
2019-07-05 13:31:32.794 DEBUG 38376 --- [nio-8080-exec-4] o.s.web.servlet.DispatcherServlet : Exiting from "ASYNC" dispatch, status 200, headers={masked}