在Kafka生产者应用程序中处理崩溃

时间:2020-10-05 18:54:30

标签: asynchronous apache-kafka callback crash kafka-producer-api

我们正在使用Confluent.Kafka 1.4.0 for .Net将消息异步发送到Kafka。

消息将成批发送(使用BatchNumMessages和LingerMS配置)。因此,当调用“ Produce” API来发送消息时,该消息将被添加到批处理中,但实际上不会发送给Kafka。批处理将根据配置稍后发送。

调用“ Produce” API发送消息后,我们将删除源中的相关数据。如果以后在回调中我们知道发送消息时发生了故障,我们将采取适当的措施来收集数据并重新发送消息或将其标记为永久性故障。

因此,在应用程序崩溃的情况下,我们将不知道是否向该批处理中添加了很少的消息,但实际上没有将其发送给Kafka。而且由于我们不会得到回调,所以我们也不知道发送的消息是否失败。

似乎我们需要依靠回调来考虑“完成”,然后删除源中的数据。但是我们不想将数据长时间保留在源中。

还有其他方法可以解决这个问题吗?

0 个答案:

没有答案