我对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
项目本身正在启动,但在尝试写入 output
在 start()
方法:
Caused by: org.springframework.integration.MessageDispatchingException: Dispatcher has no subscribers
是不是因为Kafka·宾德还没把频道绑定好?如果是这样的话,还有什么方法可以替代呢。
提前谢谢。
1条答案
按热度按时间55ooxyrt1#
你不能从一开始就这么做
@PostConstruct
. 现在太早了。其他组件可能尚未初始化。你必须把发送逻辑移到
SmartLifecycle.start()
实施。