首页 > 解决方案 > 卡夫卡不释放线程,如果它没有找到主题

问题描述

我注意到,如果没有生产者在其中生成消息的主题,因为 kafka 没有释放线程,我们无法得到对我的 http 请求的响应。

有没有办法配置Kafka,如果我们UNKNOWN_TOPIC_OR_PARTITION忽略它并且不尝试发送消息。

我看到下面的错误正在堆积。

 [Producer clientId=session-service-1] Error while fetching metadata with correlation id 28 : {*****.session-service.test.v1=UNKNOWN_TOPIC_OR_PARTITION}

尽管我捕获了任何异常,但它会破坏流程。

try {
            ListenableFuture<SendResult<String, SessionEvent>> future = kafkaTemplate.send(topicName, sessionEvent);
            future.addCallback(sessionEvent.getFutureCallback());
        } catch (Throwable e) {
            log.error("Error", e);
        }

标签: apache-kafkaspring-kafka

解决方案


事实证明,虽然它是异步方法,但我的应用程序没有配置异步方法。

所以它正在执行方法同步。但是我没有抛出任何异常。所以Kafka仍在尝试将消息发送到无效主题。


推荐阅读