spring kafka无法在回调中发送记录
ListenableFuture<SendResult<String, String>> future = kafkaTemplate.send(topic, key, data);
future.addCallback(new ListenableFutureCallback<SendResult<String, String>>() {
@Override
public void onFailure(Throwable ex) {
log.error("log error...");
}
@Override
public void onSuccess(SendResult<String, String> result) {
kafkaTemplate.send("anotherTopic", "key", "data");
}
});
当我在onsuccess()中调用kafkatemplate.send()时,kafka抛出“未能更新元数据”,这是不应有的
1条答案
按热度按时间8i9zcol21#
看起来你不能在回调线程上执行生产者操作-
kafka-producer-network-thread
-可能是生产者代码中的某个死锁—等待获取使用同一线程的元数据,因此超时。你可能需要一点时间
KafkaTemaplate
(和生产者工厂,因为默认工厂总是返回相同的生产者)。或者在另一个线程上执行第二次发送。。。