如何暂停/启动/停止Kafka Producer / Kafka模板

时间:2018-09-06 14:28:09

标签: java spring-boot apache-kafka kafka-producer-api spring-kafka

我正在使用具有kafka集成的spring boot应用程序,并且我想实现一个端点来停止和启动kafka来发布消息。 该消息由另一个端点以异步方式触发。

bean KafkaTemplate<String, String>ProducerFactory<String, String> producerFactory()没有任何停止和暂停操作。

我的目标是能够模拟连接失败,并确保将这些消息存储在我拥有的后备机制中。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

KafkaTemplate没有这些回调,因为它是一个 passive 组件,只有在我们调用它的情况下,它才能执行操作。

对于模拟连接失败,我建议您实施一个自定义ProducerFactory来生成一个KafkaProducer并带有模拟或覆盖的Future<RecordMetadata> send(ProducerRecord<K, V> record, Callback callback);。在那里,您可以在ProducerFactory中实现适当的生命周期回调,并对上述send()实现中的状态做出反应。

org.apache.kafka.clients.producer.MockProducer可能有一些东西可供您重用或借用。例如,请参见其close()fenceProducer()