Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 在春季使用多线程kafkalisteners的onetopic_Spring_Apache Kafka_Spring Kafka - Fatal编程技术网

Spring 在春季使用多线程kafkalisteners的onetopic

Spring 在春季使用多线程kafkalisteners的onetopic,spring,apache-kafka,spring-kafka,Spring,Apache Kafka,Spring Kafka,大家好,我有一个主题,我在春季借助@KafkaListener注释使用这个主题 我想使用多线程侦听器中的主题,如何实现这一点 ConcurrentKafkaListenerContainerFactory中有一个属性用于设置Concurrency,但这是正确的方法吗? ConcurrentKafkAlisterContainerFactory.setConcurrency(3),一个侦听器和三个不同的线程来使用一个主题?是的,这将创建3个线程,但主题至少需要3个分区;您不能从一个分区使用多个使用

大家好,我有一个主题,我在春季借助@KafkaListener注释使用这个主题 我想使用多线程侦听器中的主题,如何实现这一点

ConcurrentKafkaListenerContainerFactory中有一个属性用于设置Concurrency,但这是正确的方法吗?
ConcurrentKafkAlisterContainerFactory.setConcurrency(3),一个侦听器和三个不同的线程来使用一个主题?

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

是的,这将创建3个线程,但主题至少需要3个分区;您不能从单个分区使用多个使用者。

如果您有多个侦听器,请将并发添加为
@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个
kafkaconsumer
consumer2
将创建5个
kafkaconsumer
。他们会听他们指定的主题

如果只有一个
@KafkaListener
,则将默认并发添加为属性

spring.kafka.listener.concurrency=3

如果您有多个侦听器,则该值将被
@KafkaListener
中的并发值覆盖,然后将并发添加为
@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个
kafkaconsumer
consumer2
将创建5个
kafkaconsumer
。他们会听他们指定的主题

如果只有一个
@KafkaListener
,则将默认并发添加为属性

spring.kafka.listener.concurrency=3

此值将被
@KafkaListener

中的并发值覆盖。在这种情况下,如果topic1有4个分区,则consumer1使用4个不同的线程侦听topic1。对吗?在consumer1的情况下,将创建4个consumer线程,它们将侦听topic1和topic2。假设只有tpic1存在,并且它有4个分区,那么是的,4个使用者线程将同时侦听4个分区。如果有超过4个分区,那么一些线程将在2个或更多分区之间切换。如果少于4个分区,则某些线程将保持空闲。在这种情况下,如果topic1有4个分区,则consumer1使用4个不同的线程侦听topic1,对吗?在consumer1的情况下,将创建4个consumer线程,它们将侦听topic1和topic2。假设只有tpic1存在,并且它有4个分区,那么是的,4个使用者线程将同时侦听4个分区。如果有超过4个分区,那么一些线程将在2个或更多分区之间切换。如果少于4个分区,那么一些线程将保持空闲。