使用者如何绑定到指定线程

时间:2019-11-10 09:59:10

标签: spring-kafka

spring-kafka版本:2.3.1

application.yml

spring:
  kafka:
    listener:
      concurrency: 3
      type: batch

在批处理消息中,我希望能够绑定线程以处理不同的分区。

@KafkaListener(groupId = "service-order", topicPartitions = @TopicPartition(topic = "order", partitions = {"0"}))
public void listenTopicPartition(ConsumerRecord record) {
    System.out.println(record);
}

@KafkaListener(groupId = "service-order", topicPartitions = @TopicPartition(topic = "order", partitions = {"1"}))
public void listenTopicPartition1(ConsumerRecord record) {
    System.out.println(record);
}

@KafkaListener(groupId = "service-order", topicPartitions = @TopicPartition(topic = "order", partitions = {"2"}))
public void listenTopicPartition2(ConsumerRecord record) {
    System.out.println(record);
}

1 个答案:

答案 0 :(得分:1)

根据您当前的配置,这确实会发生。

您有什么问题吗?是什么让您提出这个问题? 我只是想像您一样,在测试过程中检查所有这些分区是否确实在各自的线程中进行处理。

采用这种配置逻辑,您不需要concurrency: 3:每个@KafkaListener提供自己的容器,并发是根据分配给该容器的分区进行的。由于每个人将只有一个分区,因此运行时并发始终将为1

相关问题