附录 B:变更历史
B.1. 2.6 和 2.7 之间的变化
B.1.1. Kafka 客户端版本
此版本需要 2.7.0kafka-clients
.
它还与 2.8.0 客户端兼容,从 2.7.1 版本开始;请参见覆盖 Spring Boot 依赖项。
B.1.2. 使用 Topic 的非阻塞延迟重试
此版本中添加了这一重要的新功能。 当严格排序不重要时,失败的投放可以发送到另一个主题以供以后使用。 可以配置一系列此类重试主题,但延迟会增加。 有关更多信息,请参阅Non-Blocking Retries 。
B.1.3. 侦听器容器更改
这onlyLogRecordMetadata
container 属性现在是true
默认情况下。
新的 container 属性stopImmediate
现已推出。
有关更多信息,请参阅 Listener Container Properties (侦听器容器属性)。
使用BackOff
在两次投放尝试之间(例如SeekToCurrentErrorHandler
和DefaultAfterRollbackProcessor
) 现在将在容器停止后不久退出 Back off 间隔,而不是延迟停止。
错误处理程序和回滚后扩展FailedRecordProcessor
现在可以配置一个或多个RetryListener
s 接收有关重试和恢复进度的信息。
这RecordInterceptor
现在在侦听器返回后调用了其他方法(通常,或通过引发异常)。
它还有一个子接口ConsumerAwareRecordInterceptor
.
此外,现在还有一个BatchInterceptor
对于批处理侦听器。
有关更多信息,请参阅 Message Listener Containers 。
B.1.4.@KafkaListener
变化
您现在可以验证@KafkaHandler
方法(类级侦听器)。
看@KafkaListener
@Payload
验证了解更多信息。
您现在可以设置rawRecordHeader
属性MessagingMessageConverter
和BatchMessagingMessageConverter
这会导致 RAWConsumerRecord
添加到已转换的Message<?>
.
这很有用,例如,如果您希望使用DeadLetterPublishingRecoverer
在侦听器错误处理程序中。
有关更多信息,请参阅 Listener Error Handlers 。
您现在可以修改@KafkaListener
annotations 的 Comments。
看@KafkaListener
属性修改了解更多信息。
B.1.5.DeadLetterPublishingRecover
变化
现在,如果 key 和 value 都失败了,则原始值将发布到 DLT。
以前,该值已填充,但键DeserializationException
留在标头中。
如果存在中断性 API 更改,如果将 recoverer 子类化并覆盖createProducerRecord
方法。
此外,recoverer 会在发布到目标 resolver 选择的分区之前验证该分区是否确实存在。
有关更多信息,请参阅发布死信记录。
B.1.6.ChainedKafkaTransactionManager
已弃用
有关更多信息,请参阅 事务 。
B.1.7.ReplyingKafkaTemplate
变化
现在有一种机制可以检查回复,如果存在某些条件,则异常地使 future 失败。
支持发送和接收spring-messaging
Message<?>
s 已添加。
看用ReplyingKafkaTemplate
了解更多信息。
B.1.8. Kafka Streams 更改
默认情况下,StreamsBuilderFactoryBean
现在配置为不清理本地状态。
有关更多信息,请参阅配置。
B.1.9.KafkaAdmin
变化
新方法createOrModifyTopics
和describeTopics
已添加。KafkaAdmin.NewTopics
已添加以方便在单个 bean 中配置多个主题。
有关更多信息,请参阅配置主题。
B.1.10.MessageConverter
变化
现在可以添加spring-messaging
SmartMessageConverter
到MessagingMessageConverter
,允许基于contentType
页眉。
有关更多信息,请参见Spring Messaging Message Conversion。
B.1.11. 排序@KafkaListener
s
看开始@KafkaListener
序列中的 s了解更多信息。
B.1.12.ExponentialBackOffWithMaxRetries
新的BackOff
implementation 的配置,可以更方便地配置 Max Retreries。
看ExponentialBackOffWithMaxRetries
实现了解更多信息。
B.1.13. 条件委托错误处理程序
这些新的错误处理程序可以配置为委托给不同的错误处理程序,具体取决于异常类型。 有关更多信息,请参阅委派错误处理程序。
B.2. 2.5 和 2.6 之间的变化
B.2.2. 侦听器容器更改
默认的EOSMode
现在是BETA
.
有关更多信息,请参阅 Exactly Once 语义。
各种错误处理程序(扩展FailedRecordProcessor
) 和DefaultAfterRollbackProcessor
现在重置BackOff
如果恢复失败。
此外,您现在可以选择BackOff
以根据失败的记录和/或异常使用。
现在,您可以配置adviceChain
在 Container Properties (容器属性) 中。
有关更多信息,请参阅 Listener Container Properties (侦听器容器属性)。
当容器配置为发布时ListenerContainerIdleEvent
s 中,它现在会发布一个ListenerContainerNoLongerIdleEvent
发布空闲事件后收到记录时。
有关更多信息,请参阅应用程序事件和检测空闲和无响应的使用者。
B.2.3. @KafkaListener 更改
使用手动分区分配时,您现在可以指定通配符来确定哪些分区应重置为初始偏移量。
此外,如果监听器实现了ConsumerSeekAware
,onPartitionsAssigned()
在手动分配后调用。
(也在版本 2.5.5 中添加)。
有关更多信息,请参阅 Explicit Partition Assignment。
添加了便捷的方法AbstractConsumerSeekAware
使查找更容易。
有关更多信息,请参阅 Seeking to a Specific Offset (寻找特定偏移量)。
B.2.4. ErrorHandler 更改
的子类FailedRecordProcessor
(例如SeekToCurrentErrorHandler
,DefaultAfterRollbackProcessor
,RecoveringBatchErrorHandler
) 现在可以配置为在异常类型与之前此记录发生的异常类型不同时重置重试状态。
B.2.5. Producer Factory 更改
现在,您可以为创建者设置一个最长期限,超过该期限后,它们将被关闭并重新创建。 有关更多信息,请参阅 事务 。
现在,您可以在DefaultKafkaProducerFactory
已创建。
这可能很有用,例如,如果您必须在凭证更改后更新 SSL 密钥/信任存储位置。
看用DefaultKafkaProducerFactory
了解更多信息。
B.3. 2.4 和 2.5 之间的变化
本节介绍从版本 2.4 到版本 2.5 所做的更改。 有关早期版本的更改,请参阅更改历史记录。
B.3.1. 消费者/生产者工厂更改
现在,每当创建或关闭 Consumer 或 Producer 时,默认的 consumer 和 producer 工厂都可以调用回调。 提供了本机 Micrometer 度量的实现。 有关更多信息,请参阅 Factory Listeners 。
现在,您可以在运行时更改引导服务器属性,从而能够故障转移到另一个 Kafka 集群。 有关更多信息,请参阅连接到 Kafka。
B.3.2.StreamsBuilderFactoryBean
变化
工厂 Bean 现在可以在某个KafkaStreams
created 或 destroyed。
提供了本机 Micrometer 度量的实现。
有关更多信息,请参阅 KafkaStreams Micrometer Support 。
B.3.5. Delivery Attempts 标头
现在有一个选项可以添加一个 headers,该 headers 在使用某些错误处理程序时和回滚处理器之后跟踪传递尝试。 有关更多信息,请参阅 Delivery Attempts Header。
B.3.6. @KafkaListener 更改
现在,如果需要,默认回复标头将在@KafkaListener
return 类型为Message<?>
.
有关更多信息,请参阅 Reply Type Message<?> 。
这KafkaHeaders.RECEIVED_MESSAGE_KEY
不再填充null
值,当传入记录具有null
钥匙;标题被完全省略。
@KafkaListener
方法现在可以指定ConsumerRecordMetadata
参数,而不是对元数据(如 Topic、Partition 等)使用离散标头。
有关更多信息,请参阅 Consumer Record Metadata。
B.3.7. 侦听器容器更改
这assignmentCommitOption
container 属性现在是LATEST_ONLY_NO_TX
默认情况下。
有关更多信息,请参阅 Listener Container Properties (侦听器容器属性)。
这subBatchPerPartition
container 属性现在是true
默认情况下,使用 transactions 时。
有关更多信息,请参阅 事务 。
新的RecoveringBatchErrorHandler
。
现在支持静态组成员资格。 有关更多信息,请参阅 Message Listener Containers 。
当配置了增量/协作再平衡时,如果偏移量无法提交,并且使用非致命的RebalanceInProgressException
,容器将尝试在再平衡完成后重新提交仍分配给此实例的分区的偏移量。
默认错误处理程序现在是SeekToCurrentErrorHandler
for record listener 和RecoveringBatchErrorHandler
对于批处理侦听器。
有关更多信息,请参阅容器错误处理程序。
现在,您可以控制记录标准错误处理程序有意引发的异常的级别。 有关更多信息,请参阅容器错误处理程序。
这getAssignmentsByClientId()
方法,从而更容易确定并发容器中的哪些使用者被分配了哪些分区。
有关更多信息,请参阅 Listener Container Properties (侦听器容器属性)。
您现在可以禁止整个日志记录ConsumerRecord
错误、调试日志等。
看onlyLogRecordMetadata
在 Listener Container Properties 中。
B.3.8. KafkaTemplate 更改
这KafkaTemplate
现在可以保持千分尺计时器。
有关更多信息,请参阅监控。
这KafkaTemplate
现在可以配置ProducerConfig
属性来覆盖 Producer Factory 中的属性。
看用KafkaTemplate
了解更多信息。
一个RoutingKafkaTemplate
现在已经提供了。
看用RoutingKafkaTemplate
了解更多信息。
您现在可以使用KafkaSendCallback
而不是ListenerFutureCallback
来获得范围更窄的异常,从而更容易提取失败的ProducerRecord
.
看用KafkaTemplate
了解更多信息。
B.3.9. Kafka 字符串序列化器/反序列化器
新增功能ToStringSerializer
/StringDeserializer
s 以及关联的SerDe
现在提供。
有关更多信息,请参阅字符串序列化。
B.3.10. JsonDeserializer
这JsonDeserializer
现在可以更灵活地确定反序列化类型。
有关更多信息,请参阅使用方法确定类型。
B.3.11. 委托序列化器/反序列化器
这DelegatingSerializer
现在可以处理 “standard” 类型,当出站记录没有 Headers 时。
有关更多信息,请参见Delegating Serializer 和 Deserializer。
B.3.12. 测试更改
这KafkaTestUtils.consumerProps()
帮助程序记录现在设置ConsumerConfig.AUTO_OFFSET_RESET_CONFIG
自earliest
默认情况下。
有关更多信息,请参阅 JUnit。
B.4. 2.3 和 2.4 之间的变化
B.4.2. ConsumerAwareRebalanceListener
喜欢ConsumerRebalanceListener
,此接口现在具有一个额外的方法onPartitionsLost
.
有关更多信息,请参阅 Apache Kafka 文档。
与ConsumerRebalanceListener
,默认实现不会调用onPartitionsRevoked
.
相反,侦听器容器将在调用onPartitionsLost
;因此,在实现ConsumerAwareRebalanceListener
.
有关更多信息,请参阅 Rebalancing Listeners 末尾的重要说明。
B.4.4. KafkaTemplate
这KafkaTemplate
现在支持非事务性发布和事务性发布。
看KafkaTemplate
事务性和非事务性发布了解更多信息。
B.4.5. 聚合回复KafkaTemplate
这releaseStrategy
现在是BiConsumer
.
现在,在超时后(以及记录到达时)调用它;第二个参数是true
在超时后调用。
有关更多信息,请参阅 聚合多个回复 。
B.4.6. 侦听器容器
这ContainerProperties
提供了一个authorizationExceptionRetryInterval
选项,让侦听器容器在任何AuthorizationException
由KafkaConsumer
.
请参阅其 JavaDocs 和用KafkaMessageListenerContainer
了解更多信息。
B.4.7. @KafkaListener
这@KafkaListener
annotation 具有新属性splitIterables
;默认为 true。
当回复侦听器返回Iterable
此属性控制是将返回结果作为单个记录发送,还是发送每个元素的一条记录。
看转发侦听器结果@SendTo
了解更多信息
批处理侦听器现在可以使用BatchToRecordAdapter
;例如,这允许在事务中处理 BATCH,而侦听器一次获取一条记录。
在默认实现中,ConsumerRecordRecoverer
可用于处理批处理中的错误,而无需停止整个批处理的处理 - 这在使用事务时可能很有用。
有关更多信息,请参阅使用 Batch Listeners 的事务。
B.4.8. Kafka 流
这StreamsBuilderFactoryBean
接受新属性KafkaStreamsInfrastructureCustomizer
.
这允许在创建流之前配置生成器和/或拓扑。
有关更多信息,请参见 Spring Management。
B.5. 2.2 和 2.3 之间的更改
本节介绍从版本 2.2 到版本 2.3 所做的更改。
B.5.1. 提示、技巧和示例
添加了新章节 提示、技巧和示例。 请提交 GitHub 问题和/或拉取请求以获取该章节中的其他条目。
B.5.4. 配置更改
从版本 2.3.4 开始,missingTopicsFatal
container 属性默认为 false。
如果为 true,则如果代理已关闭,则应用程序将无法启动;许多用户受到此更改的影响;鉴于 Kafka 是一个高可用性平台,我们没有预料到在没有活动代理的情况下启动应用程序会是一个常见的用例。
B.5.5. 生产者和消费者工厂变更
这DefaultKafkaProducerFactory
现在可以配置为为每个线程创建一个 Producer。
您还可以提供Supplier<Serializer>
实例作为已配置类(需要无 arg 构造函数)的替代方法,或使用Serializer
实例,然后在所有 Producer 之间共享。
看用DefaultKafkaProducerFactory
了解更多信息。
相同的选项可用于Supplier<Deserializer>
中的 实例DefaultKafkaConsumerFactory
.
看用KafkaMessageListenerContainer
了解更多信息。
B.5.6. 侦听器容器更改
以前,收到 error handlersListenerExecutionFailedException
(实际的侦听器异常作为cause
),当使用侦听器适配器(例如@KafkaListener
s).
本机引发的异常GenericMessageListener
s 被原封不动地传递给错误处理程序。
现在ListenerExecutionFailedException
始终是参数(实际的侦听器异常作为cause
),它提供对容器的group.id
财产。
因为侦听器容器有自己的提交偏移量的机制,所以它更喜欢 KafkaConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG
成为false
.
它现在会自动将其设置为 false,除非在 Consumer Factory 中专门设置或容器的 consumer 属性覆盖。
这ackOnError
property 现在是false
默认情况下。
现在可以获取消费者的group.id
属性。
看获取 Consumergroup.id
了解更多信息。
容器具有新属性recordInterceptor
允许在调用侦听器之前检查或修改记录。
一个CompositeRecordInterceptor
在您需要调用多个拦截器的情况下也提供了。
有关更多信息,请参阅 Message Listener Containers 。
这ConsumerSeekAware
具有新方法,允许您相对于开始、结束或当前位置执行查找,并查找大于或等于时间戳的第一个偏移量。
有关更多信息,请参阅 Seeking to a Specific Offset 。
便利类AbstractConsumerSeekAware
现在提供以简化查找。
有关更多信息,请参阅 Seeking to a Specific Offset (寻找特定偏移量)。
这ContainerProperties
提供了一个idleBetweenPolls
选项,让侦听器容器中的 main 循环在KafkaConsumer.poll()
调用。
请参阅其 JavaDocs 和用KafkaMessageListenerContainer
了解更多信息。
使用AckMode.MANUAL
(或MANUAL_IMMEDIATE
),现在,您可以通过调用nack
在Acknowledgment
.
有关更多信息,请参阅提交偏移量。
现在可以使用 Micrometer 监控侦听器性能Timer
s.
有关更多信息,请参阅监控。
容器现在发布与启动相关的其他使用者生命周期事件。 有关更多信息,请参阅应用程序事件。
事务性批处理侦听器现在可以支持僵尸屏蔽。 有关更多信息,请参阅 事务 。
侦听器容器工厂现在可以使用ContainerCustomizer
在创建和配置每个容器后进一步配置每个容器。
有关更多信息,请参阅 Container factory。
B.5.7. ErrorHandler 更改
这SeekToCurrentErrorHandler
现在将某些异常视为 Fatal 并禁用这些异常的重试,并在第一次失败时调用 Recoverer。
这SeekToCurrentErrorHandler
和SeekToCurrentBatchErrorHandler
现在可以配置为应用BackOff
(线程休眠)。
从版本 2.3.2 开始,当错误处理程序在恢复失败的记录后返回时,将提交已恢复记录的偏移量。
这DeadLetterPublishingRecoverer
与ErrorHandlingDeserializer
现在,将发送到死信主题的消息的有效负载设置为无法反序列化的原始值。
以前,它是null
以及提取DeserializationException
从消息标头。
有关更多信息,请参阅发布死信记录。
B.5.8. 主题生成器
新类TopicBuilder
为了更方便地创建NewTopic
@Bean
s 进行自动主题配置。
有关更多信息,请参阅配置主题。
B.5.9. Kafka Streams 更改
现在,您可以执行StreamsBuilderFactoryBean
创建者@EnableKafkaStreams
.
有关更多信息,请参阅 Streams Configuration 。
一个RecoveringDeserializationExceptionHandler
,这允许恢复具有反序列化错误的记录。
它可以与DeadLetterPublishingRecoverer
将这些记录发送到死信主题。
有关更多信息,请参见Recovery from Deserialization Exceptions。
这HeaderEnricher
transformer,使用 SpEL 生成 Headers 值。
有关更多信息,请参阅 Header Enricher 。
这MessagingTransformer
已提供。
这允许 Kafka 流拓扑与 spring-messaging 组件(例如 Spring Integration 流)进行交互。
看MessagingTransformer
和 See[从KStream
] 了解更多信息。
B.5.10. JSON 组件更改
现在,默认情况下,所有 JSON 感知组件都使用 Jackson 进行配置ObjectMapper
制作人JacksonUtils.enhancedObjectMapper()
.
这JsonDeserializer
现在提供TypeReference
的构造函数,以便更好地处理目标泛型容器类型。
也是一个JacksonMimeTypeModule
已引入序列化org.springframework.util.MimeType
转换为纯字符串。
有关更多信息,请参阅其 JavaDocs 和 Serialization, Deserialization, and Message Conversion。
一个ByteArrayJsonMessageConverter
以及所有 Json 转换器的新超类,JsonMessageConverter
.
此外,一个StringOrBytesSerializer
现已推出;它可以序列化byte[]
,Bytes
和String
的值ProducerRecord
s.
有关更多信息,请参见Spring Messaging Message Conversion。
这JsonSerializer
,JsonDeserializer
和JsonSerde
现在拥有 Fluent API,使编程配置更简单。
请参阅 javadocs、 序列化、反序列化和消息转换 以及 Streams JSON 序列化和反序列化 以获取更多信息。
B.5.11. 回复KafkaTemplate
当回复超时时,future 异常地以KafkaReplyTimeoutException
而不是KafkaException
.
此外,重载的sendAndReceive
现在提供了允许基于每条消息指定回复超时的方法。
B.5.12. AggregatingReplyingKafkaTemplate
扩展ReplyingKafkaTemplate
通过聚合来自多个接收者的回复。
有关更多信息,请参阅 聚合多个回复 。
B.5.13. 事务更改
您现在可以覆盖 producer 工厂的transactionIdPrefix
在KafkaTemplate
和KafkaTransactionManager
.
看transactionIdPrefix
了解更多信息。
B.5.14. 新的 Delegating Serializer/Deserializer
该框架现在提供了一个委托Serializer
和Deserializer
,利用标头来启用生成和使用具有多个键/值类型的记录。
有关更多信息,请参见Delegating Serializer 和 Deserializer。
B.5.15. 新的重试反序列化器
该框架现在提供了一个委托RetryingDeserializer
,以便在可能发生暂时性错误(如网络问题)时重试序列化。
有关更多信息,请参阅 Retrying Deserializer 。
B.6. 2.1 和 2.2 之间的更改
B.6.2. 类和软件包更改
这ContainerProperties
class 已从org.springframework.kafka.listener.config
自org.springframework.kafka.listener
.
这AckMode
enum 已从AbstractMessageListenerContainer
自ContainerProperties
.
这setBatchErrorHandler()
和setErrorHandler()
方法已从ContainerProperties
到两者AbstractMessageListenerContainer
和AbstractKafkaListenerContainerFactory
.
B.6.3. 回滚处理后
新的AfterRollbackProcessor
策略。
有关更多信息,请参阅 After-rollback Processor 。
B.6.4.ConcurrentKafkaListenerContainerFactory
变化
您现在可以使用ConcurrentKafkaListenerContainerFactory
创建和配置任何ConcurrentMessageListenerContainer
,而不仅仅是那些@KafkaListener
附注。
有关更多信息,请参阅 Container factory。
B.6.5. 侦听器容器更改
新的 container 属性 (missingTopicsFatal
) 已添加。
看用KafkaMessageListenerContainer
了解更多信息。
一个ConsumerStoppedEvent
现在,当使用者停止时发出。
有关更多信息,请参阅 线程安全 。
Batch 侦听器可以选择接收完整的ConsumerRecords<?, ?>
object 而不是List<ConsumerRecord<?, ?>
.
有关更多信息,请参阅 Batch Listeners 。
这DefaultAfterRollbackProcessor
和SeekToCurrentErrorHandler
现在可以恢复(跳过)不断失败的记录,并且默认情况下,在 10 次失败后恢复。
它们可以配置为将失败的记录发布到死信主题。
从版本 2.2.4 开始,可以在选择死信主题名称时使用使用者的组 ID。
这ConsumerStoppingEvent
已添加。
有关更多信息,请参阅应用程序事件。
这SeekToCurrentErrorHandler
现在可以配置为在容器配置了AckMode.MANUAL_IMMEDIATE
(自 2.2.4 起)。
B.6.6. @KafkaListener 更改
您现在可以覆盖concurrency
和autoStartup
properties 的 Comments。
现在,您可以添加配置以确定将哪些标头(如果有)复制到回复消息中。
看@KafkaListener
注解了解更多信息。
您现在可以使用@KafkaListener
作为你自己的注解上的元注解。
看@KafkaListener
作为元注释了解更多信息。
现在,可以更轻松地配置Validator
为@Payload
验证。
看@KafkaListener
@Payload
验证了解更多信息。
现在,您可以直接在 Comments 上指定 kafka 使用者属性;这些将覆盖 Consumer Factory 中定义的任何具有相同名称的属性(自版本 2.2.4 起)。 有关更多信息,请参阅 Annotation 属性。
B.6.7. 标头映射更改
类型的标头MimeType
和MediaType
现在映射为 Simpler Strings 中的RecordHeader
价值。
以前,它们被映射为 JSON,并且只MimeType
被解码。MediaType
无法解码。
它们现在是用于互作性的简单字符串。
此外,DefaultKafkaHeaderMapper
具有新的addToStringClasses
方法,允许使用toString()
而不是 JSON。
有关更多信息,请参阅 Message Headers 。
B.6.8. 嵌入式 Kafka 更改
这KafkaEmbedded
类及其KafkaRule
接口已被弃用,取而代的EmbeddedKafkaBroker
及其 JUnit 4EmbeddedKafkaRule
包装纸。
这@EmbeddedKafka
注解现在会填充EmbeddedKafkaBroker
bean 而不是已弃用的KafkaEmbedded
.
此更改允许使用@EmbeddedKafka
在 JUnit 5 测试中。
这@EmbeddedKafka
注解现在具有属性ports
要指定填充EmbeddedKafkaBroker
.
有关更多信息,请参阅测试应用程序。
B.6.9. JsonSerializer/Deserializer 增强功能
现在,您可以使用 producer 和 consumer 属性提供类型映射信息。
反序列化器上提供了新的构造函数,以允许使用提供的目标类型覆盖类型 Headers 信息。
这JsonDeserializer
现在默认删除任何类型信息标头。
您现在可以配置JsonDeserializer
使用 Kafka 属性忽略类型信息标头(自 2.2.3 起)。
有关更多信息,请参见 序列化、反序列化和消息转换。
B.6.10. Kafka Streams 更改
流配置 Bean 现在必须是一个KafkaStreamsConfiguration
object 而不是StreamsConfig
对象。
这StreamsBuilderFactoryBean
已从包…core
自…config
.
这KafkaStreamBrancher
,以便在条件分支构建在KStream
实例。
有关更多信息,请参阅 Apache Kafka Streams 支持和配置。
B.6.11. 事务 ID
当侦听器容器启动事务时,transactional.id
现在是transactionIdPrefix
附加<group.id>.<topic>.<partition>
.
此更改允许对僵尸进行适当的围栏,如此处所述。
B.7. 2.0 和 2.1 之间的变化
B.7.2. JSON改进
这StringJsonMessageConverter
和JsonSerializer
现在在Headers
,让转换器和JsonDeserializer
根据消息本身而不是固定的配置类型,在 Reception 时创建特定类型。
有关更多信息,请参见 序列化、反序列化和消息转换。
B.7.3. 容器停止错误处理程序
现在为记录和批处理侦听器提供了容器错误处理程序,这些侦听器将侦听器抛出的任何异常视为 fatal/ 他们停止了容器。 有关更多信息,请参阅处理异常。
B.7.4. 暂停和恢复容器
侦听器容器现在具有pause()
和resume()
方法(自版本 2.1.3 起)。
有关更多信息,请参阅暂停和恢复侦听器容器。
B.7.5. 有状态重试
从版本 2.1.3 开始,您可以配置有状态重试。 有关更多信息,请参阅有状态重试。
B.7.6. 客户端 ID
从版本 2.1.1 开始,您现在可以将client.id
前缀@KafkaListener
.
以前,要自定义客户端 ID,您需要为每个侦听器提供单独的使用者工厂(和容器工厂)。
前缀后缀为-n
以在使用并发时提供唯一的客户端 ID。
B.7.7. 记录偏移提交
默认情况下,主题偏移提交的日志记录是使用DEBUG
日志记录级别。
从版本 2.1.2 开始,在ContainerProperties
叫commitLogLevel
用于指定这些消息的日志级别。
看用KafkaMessageListenerContainer
了解更多信息。
B.7.8. 默认@KafkaHandler
从版本 2.1.3 开始,您可以指定一个@KafkaHandler
类级别的注释@KafkaListener
作为默认值。
看@KafkaListener
在类上了解更多信息。
B.7.9. 回复KafkaTemplate
从版本 2.1.3 开始,一个KafkaTemplate
以支持请求/回复语义。
看用ReplyingKafkaTemplate
了解更多信息。
B.7.11. 从 2.0 迁移指南
请参阅 2.0 到 2.1 迁移指南。
B.8. 1.3 和 2.0 之间的更改
B.8.2.@KafkaListener
变化
您现在可以批注@KafkaListener
方法(以及类和@KafkaHandler
方法)与@SendTo
.
如果该方法返回结果,则会将其转发到指定的 Topic。
看转发侦听器结果@SendTo
了解更多信息。
B.8.3. 消息侦听器
消息侦听器现在可以了解Consumer
对象。
有关更多信息,请参阅 消息侦听器。
B.8.4. 使用ConsumerAwareRebalanceListener
再平衡侦听器现在可以访问Consumer
对象。
有关更多信息,请参阅重新平衡侦听器。
B.9. 1.2 和 1.3 之间的变化
B.9.1. 对事务的支持
0.11.0.0 客户端库添加了对事务的支持。
这KafkaTransactionManager
以及对事务的其他支持。
有关更多信息,请参阅 事务 。
B.9.2. 对 Headers 的支持
0.11.0.0 客户端库添加了对消息标头的支持。
现在可以将这些 Map 映射到spring-messaging
MessageHeaders
.
有关更多信息,请参阅 Message Headers 。
B.9.4. 支持 Kafka 时间戳
KafkaTemplate
现在支持 API 添加带有时间戳的记录。
新增功能KafkaHeaders
已介绍timestamp
支持。
此外,新的KafkaConditions.timestamp()
和KafkaMatchers.hasTimestamp()
添加了 testing 实用程序。
看用KafkaTemplate
,@KafkaListener
注解和 Testing Applications 了解更多详情。
B.9.5.@KafkaListener
变化
您现在可以配置KafkaListenerErrorHandler
处理异常。
有关更多信息,请参阅处理异常。
默认情况下,@KafkaListener
id
属性现在用作group.id
属性,覆盖在 Consumer Factory 中配置的属性(如果存在)。
此外,您可以显式配置groupId
在注释上。
以前,您需要一个单独的容器工厂(和消费者工厂)来使用不同的group.id
侦听器的值。
要恢复以前使用出厂配置的行为group.id
中,将idIsGroup
属性设置为false
.
B.9.6.@EmbeddedKafka
注解
为方便起见,测试类级别的@EmbeddedKafka
annotation 来注册KafkaEmbedded
作为 Bean 进行。
有关更多信息,请参阅测试应用程序。
B.9.7. Kerberos 配置
现在提供对配置 Kerberos 的支持。 有关更多信息,请参阅 JAAS 和 Kerberos。
B.11. 1.0 和 1.1 之间的变化
B.11.5. 查找
您现在可以查找每个主题或分区的位置。 当使用组管理并且 Kafka 分配分区时,您可以使用此选项在初始化期间设置初始位置。 您还可以在检测到空闲容器时或在应用程序执行中的任何任意点进行查找。 有关更多信息,请参阅 Seeking to a Specific Offset (寻找特定偏移量)。