You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Cloud Stream 3.1函数式生产者测试received为null如何解决?

问题原因

你调用produce方法把消息放入队列后,立刻调用了无参的output.receive(),而Spring Cloud Stream对Supplier类型的函数默认轮询间隔是1000ms(1秒),此时轮询还未触发,消息没有被发送到测试绑定器的输出通道,因此拿到null返回值。

修复方案

  1. 给receive方法添加超时时间,等待轮询执行完成:
    将测试代码中
Message<byte[]> received = output.receive();

修改为

// 超时时间单位为毫秒,设置2秒足够覆盖默认的1秒轮询间隔
Message<byte[]> received = output.receive(2000);
  1. (可选)加快测试执行速度
    你可以在测试的启动参数中添加轮询间隔配置,把默认的1秒轮询改短,比如修改启动参数为:
.run("--spring.jmx.enabled=false", "--spring.cloud.stream.poller.fixed-delay=100")

设置为100ms轮询一次,测试不需要长时间等待就能拿到结果。

额外排查点

如果修改后还是拿不到消息,可以检查MyMessage类是否实现了序列化接口,有没有JSON序列化相关的异常抛出,消息转换失败也会导致输出通道没有消息。

内容的提问来源于stack exchange,提问作者Vin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 11:18:00