响应式微服务开发:从非阻塞REST API到事件驱动异步服务
1. 非阻塞REST API测试与日志分析
在测试过程中,我们可以查看审查服务的日志输出,从中能看到SQL语句在调度器专用线程池中运行的证据。例如,日志输出可能如下:
- 第一条日志输出源自 getReviews() 方法中的 LOG.info() 调用,它在名为 ctor-http-nio-4 的HTTP线程上执行,这是WebFlux使用的线程。
- 第二条日志输出显示了Spring Data JPA生成的SQL语句,底层使用了Hibernate。该SQL语句对应于 repository.findByProductId() 方法调用,它在名为 jdbc-pool-1 的线程上执行,这意味着它在用于阻塞代码的专用线程池中执行。
相关完整源代码可查看审查项目中的 ReviewServiceApplication 和 ReviewServiceImpl 类。
2. 复合服务中的非阻塞REST API
要使复合服务中的REST API非阻塞,需要进行以下更改:
- API更改 :将API操作的返回类型改为响应式数据类型。例如, getProduct() 方法的返回类型 ProductAggregate 需替换为 Mono<ProductAggrega
响应式微服务:非阻塞与事件驱动
超级会员免费看
订阅专栏 解锁全文
20

被折叠的 条评论
为什么被折叠?



