开发响应式微服务:从非阻塞 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 类。完成核心服务中非阻塞 REST API 的实现后,接下来我们将探讨如何使复合服务中的 REST API 也实现非阻塞。
2. 复合服务中的非阻塞 REST API
要使复合服务中的 REST API 实现非阻塞,需要进行以下几个方面的更改:
1. API 更改 :让 API 操作仅返回响应式数据类型。例如,将 getProdu
超级会员免费看
订阅专栏 解锁全文

48

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



