1515 */
1616
1717import org.apache.kafka.clients.consumer.ConsumerConfig
18+ import org.apache.kafka.clients.consumer.ConsumerRecord
1819import org.apache.kafka.clients.producer.ProducerConfig
1920import org.apache.kafka.common.serialization.StringDeserializer
2021import org.apache.kafka.common.serialization.StringSerializer
@@ -59,13 +60,21 @@ class EnableKafkaKotlinTests {
5960 assertThat(this .config.received).isEqualTo(" foo" )
6061 }
6162
63+ @Test
64+ fun `test batch listener` () {
65+ this .template.send(" kotlinTestTopic" , " foo" )
66+ assertThat(this .config.latch.await(10 , TimeUnit .SECONDS )).isTrue()
67+ assertThat(this .config.batchReceived).isEqualTo(" foo" )
68+ }
69+
6270 @Configuration
6371 @EnableKafka
6472 class Config {
6573
6674 lateinit var received: String
75+ lateinit var batchReceived: String
6776
68- val latch = CountDownLatch (1 )
77+ val latch = CountDownLatch (2 )
6978
7079 @Value(" \$ {" + KafkaEmbedded .SPRING_EMBEDDED_KAFKA_BROKERS + " }" )
7180 private lateinit var brokerAddresses: String
@@ -82,7 +91,6 @@ class EnableKafkaKotlinTests {
8291 @Bean
8392 fun kcf (): ConsumerFactory <String , String > {
8493 val configs = HashMap <String , Any >()
85- configs[" foo" ] = " bar"
8694 configs[ConsumerConfig .BOOTSTRAP_SERVERS_CONFIG ] = this .brokerAddresses
8795 configs[ConsumerConfig .KEY_DESERIALIZER_CLASS_CONFIG ] = StringDeserializer ::class .java
8896 configs[ConsumerConfig .VALUE_DESERIALIZER_CLASS_CONFIG ] = StringDeserializer ::class .java
@@ -104,12 +112,27 @@ class EnableKafkaKotlinTests {
104112 return factory
105113 }
106114
107- @KafkaListener(id = " kotlin" , topics = [" kotlinTestTopic" ])
115+ @Bean
116+ fun kafkaBatchListenerContainerFactory (): ConcurrentKafkaListenerContainerFactory <String , String > {
117+ val factory: ConcurrentKafkaListenerContainerFactory <String , String >
118+ = ConcurrentKafkaListenerContainerFactory ()
119+ factory.isBatchListener = true
120+ factory.consumerFactory = kcf()
121+ return factory
122+ }
123+
124+ @KafkaListener(id = " kotlin" , topics = [" kotlinTestTopic" ], containerFactory = " kafkaListenerContainerFactory" )
108125 fun listen (value : String ) {
109126 this .received = value
110127 this .latch.countDown()
111128 }
112129
130+ @KafkaListener(id = " kotlin-batch" , topics = [" kotlinTestTopic" ], containerFactory = " kafkaBatchListenerContainerFactory" )
131+ fun batchListen (values : List <ConsumerRecord <String , String >>) {
132+ this .batchReceived = values.first().value()
133+ this .latch.countDown()
134+ }
135+
113136 }
114137
115138}
0 commit comments