@postconstruct和自动连接messagechannel

5lwkijsr  于 2021-06-08  发布在  Kafka
关注(0)|答案(1)|浏览(461)

我对Spring的云流有意见。问题是,我有一个bean,它一创建就会写入kafka(用@postconstruct注解的方法),所以我自动连接适当的messagechannel,并在application.yml中设置destination和binder属性。它是这样的:

@Component
@RequiredArgsConstructor
public class Sender
{
    private final MessageChannel output;

    @PostConstruct
    public void start()
    {
       output.send(new GenericMessage("Hello world");  
    }
}

和应用程序.yml

spring:
    cloud:
        stream:
            bindings:
              output:
                destination: someData
                binder: kafka

我还有以下依赖项:

- spring-cloud-stream-reactive
- reactor-core
- spring-cloud-starter-stream-kafka

项目本身正在启动,但在尝试写入 outputstart() 方法:

Caused by: org.springframework.integration.MessageDispatchingException: Dispatcher has no subscribers

是不是因为Kafka·宾德还没把频道绑定好?如果是这样的话,还有什么方法可以替代呢。
提前谢谢。

55ooxyrt

55ooxyrt1#

你不能从一开始就这么做 @PostConstruct . 现在太早了。其他组件可能尚未初始化。
你必须把发送逻辑移到 SmartLifecycle.start() 实施。

相关问题