Spring Cloud Stream SQS Binder函数绑定不生效,消费方法未触发如何排查
解决方案
修正绑定配置
你当前的消费者自定义别名绑定容易出现映射问题,建议直接绑定函数输入通道,修改消费者application.yml如下:
如果你需要保留自定义spring: cloud: stream: bindings: consumer1-in-0: destination: testqueue function: definition: consumer1req1别名的写法,需确认使用的Spring Cloud Stream版本 >= 3.1,且所有配置中的别名拼写、大小写完全一致。排查序列化/反序列化问题
消费者能拉取到消息但不触发消费函数,绝大多数是消息反序列化失败导致的:- 确认
Model类实现了Serializable接口,且提供公共无参构造函数、所有字段的getter/setter方法 - 可在配置中显式指定JSON序列化规则:
spring: cloud: stream: sqs: bindings: consumer1-in-0: consumer: serialization-factory: json- 确认
开启Debug日志排查隐藏异常
增加如下日志配置,查看是否存在未捕获的处理异常:
如果日志中存在Jackson反序列化相关的异常,根据提示调整logging: level: com.idealo.spring.cloud.stream.binder: debug org.springframework.cloud.stream: debugModel类结构或序列化配置即可。校验版本兼容性
确认spring-cloud-stream-binder-sqs的版本和你使用的Spring Boot、Spring Cloud版本匹配,避免版本不兼容导致的函数绑定失效。
内容的提问来源于stack exchange,提问作者Salman
相关产品推荐
相关产品推荐

