使用Spring Cloud Stream编写生产者时,注入的Source为null

来源:9-15 Spring Cloud Stream-编写生产者

kkthmyh

2020-11-05

老师您好:

  @GetMapping("test-stream")
    public String testStream() {
        this.source.output().send(MessageBuilder.withPayload("消息体").build());
        return "200";
    }

这里注入的Source为null,启动类确认加了@EnableBinding({Source.class}),希望可以解答疑惑

图片描述

写回答

3回答

精慕门3084555

2020-12-23

我也遇到这个问题了,消息发送不了,

23:13:01.377 ERROR 19816 --- [enderExecutor_3] c.a.c.s.b.r.i.RocketMQMessageHandler     : RocketMQ Message hasn't been sent. Caused by Send [1] times, still failed, cost [3003]ms, Topic: stream-test-topic, BrokersSent: [broker-a]

See http://rocketmq.apache.org/docs/faq/ for further details.

控制台也没有stream-test-topic 这个主题,请问下是如何解决的

0
2
精慕门3084555
回复
大目
已解决,查看rocketmq_client.log,发现是10909端口未放开,遇到类似情况的同学可以借鉴下,老师发的这个链接也有类似解决方法说明
2020-12-24
共2条回复

大目

2020-11-06

如果你对原理感兴趣,可以这样:

  1. 把代码改成如下:

//img.mukewang.com/szimg/5fa4275b092f5c7219840518.jpg

2. 在org.springframework.cloud.stream.binding.BindableProxyFactory#invoke 方法上打上断点

3. 访问/test-stream断点,触发source.toString方法。然后你会发现,这个toString()方法是拿不到的,直接返回了null。

//img1.sycdn.imooc.com/szimg/5fa427b209035c9023740880.jpg


0
0

大目

2020-11-05

您好,从您贴出的代码来看,是OK的,一时之间我也不知道是什么问题。

建议将完整的代码共享到GitHub或者Gitee,我来给你看看吧。

0
3
kkthmyh
回复
大目
谢谢,辛苦了
2020-11-06
共3条回复

Spring Cloud Alibaba微服务从入门到进阶

面向未来微服务:熟练掌握Spring Cloud Alibaba

3085 学习 · 1324 问题

查看课程