处理器是扩展接收器和源的接口。 接收器创建一个名为“输入”的通道
在我的应用程序中,我有:
1.具有@EnableBinding(Source.class)
的类,可创建“输出”通道。
2.具有@EnableBinding(Processor.class)
的类,其类具有用@Transformer(inputChannel = Processor.INPUT, outputChannel = "myOutputChannel")
注释的方法
3.具有'@EnableBinding(Sink.class)'的类,该类的方法带有@ServiceActivator(inputChannel = "myOutputChannel")
显然我没有两次绑定“输入”,但是当我运行该应用程序时,出现此错误:
Invalid bean definition with name 'input' defined in org.springframework.cloud.stream.messaging.Sink: bean definition with this name already exists - org.springframework.cloud.stream.messaging.Processor;
为什么会这样?我做错了什么?
我放下一个应用程序,该应用程序包含三个组件应用程序:源,接收器和处理器。源类绑定到@EnableBinding(Source.class)
,接收器类绑定到@EnableBinding(Sink.class)
,处理器类绑定到@EnableBinding(Processor.class)
。当我更新应用程序以使用新的Spring Boot和云依赖关系(Spring Boot 2.1.5和Cloud版本为Greenwich.SR1)时,我开始在上面看到此错误。我将Sink.class和Source.class更新为Processor.class,以确保仅创建一次input
和output
bean,并使它们工作。