java - Cloud Stream中的@EnableBinding后面是做什么的?

标签 java spring apache-kafka spring-cloud-stream

我目前正在使用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) 中,我们正在放弃基于注释的模型,转而采用功能性模型,并且我已尽我所能删除尽可能多的引用正如我从新用户指南中可以看到的那样,同时支持 EnableBindingStreamListener。我们的release announcement包含几个更深入地了解我们动机的链接。

虽然您可以在 older guide 中获取有关 EnableBinding 的更多信息,简而言之,它在提供的接口(interface)中标识的 channel 和外部绑定(bind)器目的地(例如 Kafka 主题、Rabbit 队列/交换等)之间建立了一座桥梁。

但正如我所说,如果你刚刚开始使用 spring-cloud-stream,则不需要使用它们

关于java - Cloud Stream中的@EnableBinding后面是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59438446/

相关文章:

java - 在阅读主题后异步提交消息

java - 如何使用struts2 <s :if> tag对列表类型的变量进行空检查

java - 从 Firebase 数据库获取项目/子项列表?

java - 当我在 JPanel 变得可见后对其进行修改时,paintComponent 在 componentResized 之前被调用

java - 如何为过滤器创建 HATEOAS 链接?

java - 如何将 "find or create"方法提取到抽象类? ( Spring 数据 Jpa)

apache-kafka - 从kafka主题中删除单个记录

java - getLocalAddress 在连接的套接字上返回 127.0.0.1

java - 在没有版本注释或 OptimisticLocking 策略的情况下获取 ObjectOptimisticLockingFailureException

java - 如何使用直接流在 Kafka Spark Streaming 中指定消费者组