Binder SPI
内容摘录自官方文档 Binder SPI 一节
Binder SPI由一些接口、开箱即用的实用类和发现策略组成,提供了一个连接到外部中间件的可插拔机制。
SPI的关键点是 Binder 接口,它是一种连接输入和输出到外部中间件的策略。下面的列表显示了Binder接口的定义:
public interface Binder<T, C extends ConsumerProperties, P extends ProducerProperties> {
Binding<T> bindConsumer(String bindingName, String group, T inboundBindTarget, C consumerProperties);
Binding<T> bindProducer(String bindingName, T outboundBindTarget, P producerProperties);
}
该接口是参数化的,提供一些扩展点:
-
输入和输出的绑定目标。
-
可扩展的消费者和生产者属性,允许特定的 Binder 实现添加补充属性,可以以类型安全的方式支持。
典型的 binder 实现由以下部分组成。
-
一个实现了
Binder接口的类。 -
一个 Spring
@Configuration类,它与中间件连接基础设施一起创建了一个 Binder 类型的bean。 -
一个在 classpath 上找到的
META-INF/spring.binders文件,包含一个或多个Binder定义,如下例所示。
kafka:\
org.springframework.cloud.stream.binder.kafka.config.KafkaBinderConfiguration
正如前面提到的,binder 的抽象性也是框架的扩展点之一。因此,如果你在前面的列表中找不到合适的 binder,你可以在 Spring Cloud Stream 的基础上实现你自己的 binder。在《如何从头开始创建 Spring Cloud Stream binder》一文中,一位社区成员通过一个例子详细记录了实现自定义 binder 的一系列必要步骤。这些步骤在实现自定义binder部分也有强调。