一些说明:
- 此 PR 解决了https://github.com/spring-projects/spring-boot/issues/29080和https://github.com/spring-projects/spring-boot/issues/18804。
- 我将 Reactor Kafka 自动配置放在
kafka
层次结构下,而不是reactor.kafka
因为没有其他组件具有其响应式等效文件夹。当实现所谓的“通用 kafka 自动配置超类”时,这也更容易。当需要实施更改时,这也更容易维护,因为两个自动配置都位于同一位置。 - 常见的 Kafka 自动配置超类尚未在此 PR 中实现,因此具有其自己的
ReactiveKafkaProperties
静态类。Properties
- 此 PR 并未解决使用 Reactor Kafka 时对 Spring Kafka 的需求,即此问题。为了解决这个问题,我们需要提取两个客户端使用的所有公共属性并将它们公开给它们。
- 由于像 这样的基本字段
bootstrapServers
在 中定义KafkaProperties
,ReactiveKafkaProperties
因此用 进行注释@ConditionalOnBean(KafkaProperties.class)
。 - 自动配置函数使用带有空检查\大于零检查的
ReceiverOptions
“s & ”设置器,而不仅仅是构建一个类,因为这个类是内部的而不是公共的。SenderOptions
ImmutableReceiverOptions
- 我一直在创建定制器界面,但我不确定我应该定制哪些类,因为
DefaultKafkaReceiver
&DefaultKafkaSender
被归类为内部类。
scheduler
、assignListeners
和revokeListeners
字段没有自动配置schedulerSupplier
。
- 由于
reactor.kafka.sender.ImmutableSenderOptions
不是公开的,因此目前很难传递像 Scheduler 这样的字段,因为它是从配置文件中读取的,作为类型的字段Class<?>
,而不能轻易传递给senderOptions.scheduler()
。 assignListeners
并且revokeListeners
似乎没有必要从 YAML 进行配置,即使我们想这样做,我认为也很难实现。schedulerSupplier
对于我来说,自动配置似乎也是不必要的。assignTopicPartitions
由于将 YAML 文件中的String
& KV 对绑定为类时出现问题,因此我无法绑定。int
TopicPartition
- 我曾想过在没有配置任何主题时抛出一个错误,但是我放弃了这个,因为它可能会损害那些在类路径上有自动配置但不使用它的人。