具有topicPattern和多个并发分区的Spring KafkaListener

具有topicPattern和多个并发分区的Spring KafkaListener,spring,spring-boot,apache-kafka,Spring,Spring Boot,Apache Kafka,我有一个带有卡夫卡的Spring boot应用程序 我希望接收来自kafka主题的消息(主题是动态创建的,所以我在不同的线程中使用topicPattern=“my-tompic-.*),这样,如果来自主题my-topic的消息处理时间很长,就不要等待,也不要阻止处理来自其他主题(my-topic-uuid1、my-topic-uuid2等)的消息 例如,我按以下顺序传递消息: 00:00:00-message1->my-topic-uuid1 00:00:01-message2->my-top

我有一个带有卡夫卡的Spring boot应用程序

我希望接收来自kafka主题的消息(主题是动态创建的,所以我在不同的线程中使用topicPattern=“my-tompic-.*),这样,如果来自主题my-topic的消息处理时间很长,就不要等待,也不要阻止处理来自其他主题(my-topic-uuid1、my-topic-uuid2等)的消息

例如,我按以下顺序传递消息:

  • 00:00:00-message1->my-topic-uuid1
  • 00:00:01-message2->my-topic-uuid2
消息处理需要5分钟。 我想在我的KafkaListener完成处理message1时开始处理message2而不必等待

我知道它只能作为每个特定分区的独立线程,但我不知道如何使用KafkaListener和topicPattern配置它

@KafkaListener(id = "MyConsumerID", topicPattern = "${kafka.myTopicsPattern}", groupId = "my-app",
            containerFactory = "myKafkaListenerContainerFactory")
public void receiveMessage(ConsumerRecord<String, byte[]> record) {
   //save bytes to file
   //convert file
   //send file to another service
   //throw exception if sending failed (auto-commit is true, so I keep message uncommitted in topic in case of exception)
}
@KafkaListener(id=“MyConsumerID”,topicPattern=“${kafka.myTopicsPattern}”,groupId=“我的应用程序”,
containerFactory=“myKafkaListenerContainerFactory”)
公共无效接收消息(消费者记录记录){
//将字节保存到文件
//转换文件
//将文件发送到另一个服务
//发送失败时抛出异常(自动提交为true,所以我在主题中保持消息未提交以防异常)
}
我认为只有编写自定义消费者,在创建新主题时在单独的线程中启动它,轮询消息并在最后停止该消费者,才有可能。但这似乎是一个糟糕的解决方案

有人面对过这样的情况吗