Apache kafka 有没有办法在DeadLetterPublishingRecoverer中找到消费者群体?

Apache kafka 有没有办法在DeadLetterPublishingRecoverer中找到消费者群体?,apache-kafka,spring-kafka,Apache Kafka,Spring Kafka,我有一个使用DLQ方法的项目,在@KafkaListener中的任何异常情况下,错误将发送到结构为error--的主题。当我们想要手动重试来自此DLQ的卡夫卡消息时,我们将生成一个具有类似结构的主题重试--。因此,例如,如果我们将有一个主要主题foo,消费者群体bar,我们将有以下主题:foo,error foo bar和retry foo bar 这样,我们可以为特定的消费者组重试消息。消息处理程序同时读取主主题和重试主题 由于项目中有多个侦听器都使用相同的容器,因此我们将主题(main、er

我有一个使用DLQ方法的项目,在
@KafkaListener
中的任何异常情况下,错误将发送到结构为
error--
的主题。当我们想要手动重试来自此DLQ的卡夫卡消息时,我们将生成一个具有类似结构的主题
重试--
。因此,例如,如果我们将有一个主要主题
foo
,消费者群体
bar
,我们将有以下主题:
foo
error foo bar
retry foo bar

这样,我们可以为特定的消费者组重试消息。消息处理程序同时读取主主题和重试主题

由于项目中有多个侦听器都使用相同的容器,因此我们将主题(main、error和retry)放在应用程序属性中,并配置了
DeadLetterPublishingRecoverer
,以查找相应的DLQ(注意,这是Kotlin):

这一切都很好。但是,现在我想添加另一个
@KafkaListener
,它与另一个侦听器侦听相同的主题。因此,我需要给这个听众一个单独的消费者群体

但是,如果我使用与上面相同的逻辑来查找相应的DLQ主题,那么两个侦听器中的一个将使用另一个的DLQ,因为它不在这里查看消费者组


所以我的问题是:在春天的卡夫卡,有没有办法找到发生错误的消费者群体(又称
groupId
)呢?我查看了文档和源代码,但自己找不到。非常感谢您的帮助。

通过调用
KafkaUtils.getGroupId()
(当容器线程启动时,它存储在
ThreadLocal
中)可以获得消费者的
group.id

嗨,Gary,感谢您的回答您不需要“弄清楚我是否可以使用它”。
DLPR
始终在使用者线程上调用,因此当在该线程上调用目标解析器时,它始终有效。
val recoverer = DeadLetterPublishingRecoverer(template) { record, _ ->
    val dlq = kafkaProperties.topics.values.firstOrNull { it.main == record.topic() || it.retry == record.topic() }!!.dlq

    return@DeadLetterPublishingRecoverer TopicPartition(dlq, -1)
}