我目前正在使用Spring Cloud Stream。我正在使用@EnableBinding annatotation。但不知道后面这个是做什么用的。当我查看Springin的官方网站时,我并没有得到太多信息。能详细解释一下吗?
我还有一个问题。
public interface Sink {
String INPUT = "input";
@Input(Sink.INPUT)
SubscribableChannel input();
}
@SpringBootApplication
@EnableBinding(Sink.class)
public class VoteRecordingSinkApplication {
public static void main(String[] args) {
SpringApplication.run(VoteRecordingSinkApplication.class, args);
}
@StreamListener(Sink.INPUT)
public void processVote(Vote vote) {
votingService.recordVote(vote);
}
}
为什么Spring需要这个接口(interface)?我只是希望我们可以只写streamlistener。后面怎么回事?
最佳答案
您没有得到太多的原因是因为在 3.0.0 (Hoxton) 中,我们正在放弃基于注释的模型,转而采用功能性模型,并且我已尽我所能删除尽可能多的引用正如我从新用户指南中可以看到的那样,同时支持 EnableBinding
和 StreamListener
。我们的release announcement包含几个更深入地了解我们动机的链接。
虽然您可以在 older guide 中获取有关 EnableBinding
的更多信息,简而言之,它在提供的接口(interface)中标识的 channel 和外部绑定(bind)器目的地(例如 Kafka 主题、Rabbit 队列/交换等)之间建立了一座桥梁。
但正如我所说,如果你刚刚开始使用 spring-cloud-stream,则不需要使用它们
关于java - Cloud Stream中的@EnableBinding后面是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59438446/