在下面的教程中,我们将演示如何使用Spring Kafka,Spring Boot和Maven设置批量监听器。我们从配置开始BatchListener。您可以选择配置BatchErrorHandler。我们还演示了如何设置批量大小消息的上限。当我们收到消息时,我们也有可能抓取单个消息的标头值。

项目设置

Spring Kafka:2.1.4.RELEASE

Spring Boot:2.0.0.RELEASE

Apache Kafka:kafka_2.11-1.0.0

Maven:3.5

Maven依赖



发送消息给Kafka

在之前的教程中,我们了解了如何使用Spring Kafka生成和使用消息。的Sender和SenderConfig是相同的。在以下示例中,我们将展示如何使用a批量接收消息BatchListener。

配置批处理侦听器

从版本1.1开始,可以将@KafkaListener方法配置为接收从消费者调查接收的整批消费者记录。配置监听器容器工厂创建一批听众,设置的的batchListener属性ConcurrentKafkaListenerContainerFactory来true。

我们可以选择BatchErrorHandler使用ConcurrentKafkaListenerContainerFactory#getContainerProperties().setBatchErrorHandler()并提供批处理错误处理程序来创建一个。

我们可以通过将Spring Kafka设置为ConsumerConfig.MAX_POLL_RECORDS_CONFIG适合您的值来配置Spring Kafka来设置批量大小的上限。默认情况下,动态计算每批中接收的记录数。在以下示例中,我们将上限配置为5。



使用批量侦听器批量接收Kafka消息

由于我们正在接收批处理消息,因此我们需要更新receive()方法以接受List消息。或者,您可以在每条消息中接收每个偏移量等的列表Message或ConsumerRecord

在接收批处理消息时,还可以接收各个消息的补充标题。您还需要接受List您想要的标头。


使用application.yml配置应用程序

我们还创建了一个application.yml位于该src/main/resources文件夹中的属性文件。这些属性通过spring boot在配置类中注入。


运行应用程序

最后,我们编写了一个简单的Spring Boot应用程序来演示应用程序。为了使这个演示工作,我们需要一个localhost在端口上运行的Kafka服务器9092,这是Kafka的默认配置。


演示

当我们运行应用程序时,我们收到以下输出。