升级Spring Cloud依赖后API返回202而非200的原因咨询
问题原因及解决方案
原因
在Spring Cloud Function的Hoxton及后续版本(对应Spring Boot 2.2+)中,官方调整了Consumer类型函数的Web端点处理逻辑:
- 旧版本(Greenwich及更早)中,Consumer类型函数是同步执行的,函数处理完成后才会返回200 OK响应。
- 新版本中,默认将Consumer类型函数的Web请求处理改为异步模式:请求被接收后立即返回202 Accepted,函数逻辑在后台异步执行。
这个变化是Spring Cloud Function为了提升Web端点吞吐量、避免长时间阻塞请求线程而做出的设计调整。
解决方案
如果需要恢复旧版本的同步行为,让请求处理完成后返回200 OK,只需在配置文件中添加以下配置:
Properties格式
spring.cloud.function.web.async=false
YAML格式
spring: cloud: function: web: async: false
如果希望保持异步执行,但需要给调用方处理完成后的反馈,也可以考虑将Consumer改为返回结果的Function类型,或者结合Spring异步回调机制实现自定义的响应逻辑。
内容的提问来源于stack exchange,提问作者Jaiprasad
相关产品推荐
相关产品推荐

