在spring中使用多线程kafkalisteners中的onetopic

eimct9ow  于 2021-06-04  发布在  Kafka
关注(0)|答案(2)|浏览(412)

嗨,我有一个主题,我在@kafkalistener注解的帮助下使用这个主题,在Spring我想使用多线程侦听器的主题,我如何才能实现这个目标?
concurrentkafkalistenercontainerfactory中有一个属性可以设置Concurrency,但这是正确的方法吗?concurrentkafkalistenercontainerfactory.setconcurrency(3),一个侦听器和三个不同的线程来使用一个主题?

6psbrbz9

6psbrbz91#

是的,这将创建3个线程,但主题至少需要3个分区;你不能从一个分区消费多个消费者。

hiz5n14c

hiz5n14c2#

如果有多个侦听器,则将并发性添加为的属性 @KafkaListener . 例如,

@KafkaListener(id = "consumer1", topics = {"topic1","topic2"}, groupId = "group1", concurrency = "4")
    public void consumeLog1(){
    }

    @KafkaListener(id = "consumer2", topics = {"topic2","topic3"}, groupId = "group1", concurrency = "5")
    public void consumeLog2(){
    }
``` `consumer1` 将创建4个 `KafkaConsumers` 以及 `consumer2` 将创建5个 `KafkaConsumers` . 他们会听他们指定的主题。
如果你只有一个 `@KafkaListener` 然后将默认并发添加为属性。

spring.kafka.listener.concurrency=3

此值将被中的并发值覆盖 `@KafkaListener` .

相关问题