【发布时间】:2020-06-01 20:51:37
【问题描述】:
我正在为 Apache Kafka 使用 Spring,并创建了一个服务,该服务通过 Spring 的 KafkaTemplate 使用 Kafka 生产者 (org.apache.kafka.clients.producer) 向主题发送消息。在目标 Kafka 集群上,我禁用了自动主题创建。使用此处列出的生产者配置组合https://kafka.apache.org/documentation/#producerconfigs 我成功控制了请求的重试次数、重试间隔时间等。
如果我提供的主题不存在,则请求会在我期望的时候超时(达到 max.block.ms 的值)。但是,在超时后,我继续以 retry.backoff.ms 设置的间隔获取日志条目(如下面的条目),直到 300000 ms / 5 分钟到达。
我无法确定生产者或代理上的哪个配置属性可以更改以阻止生产者检查 5 分钟以查看主题是否已创建。
有人可以指出正确的设置,让我在请求超时后减少这种情况或让它停止检查吗?
日志条目示例:
WARN [kafka-producer-network-thread | producer-1] org.apache.kafka.clients.NetworkClient$DefaultMetadataUpdater: [Producer clientId=producer-1] Error while fetching metadata with correlation id 9 : {<specified_topic>=UNKNOWN_TOPIC_OR_PARTITION}
使用的生产者配置:
- delivery.timeout.ms = 5000
- linger.ms = 1000
- max.block.ms = 8000
- request.timeout.ms= 4000
- max.retry.count = 0
- retry.backoff.ms = 2000
【问题讨论】:
-
UNKNOWN_TOPIC_OR_PARTITION... 请描述这个主题以证明它存在。如果它不存在,你为什么要尝试生产它?为什么生产者应该停止尝试发送给它? -
能否请您展示您提供给生产者和经纪人的配置?
-
@FatemaSagar 更新了帖子
-
@cricket_007 我正在开发一种企业服务,它将通过来自各种客户端的 http 请求接收一条或多条消息,并将这些消息发送到请求中提供的 kafka 集群和主题。客户端将无法创建新主题,并且他们可能会在他们的请求中不小心将无效/不存在的主题传递给此服务。
-
您使用的是什么客户端版本?
标签: apache-kafka kafka-producer-api