卡夫卡制片人行为

时间:2015-10-16 11:21:18

标签: apache-kafka kafka-producer-api

我在我的localhost上设置了Kafka,并尝试在发生网络问题时监控Kafka Producer的行为。

即使所有经纪人都失败了,制作人也不会给出任何错误。 我正在使用同步制作人和Kafka版本0.8。

如果所有经纪人都关闭,生产者是否有任何方式可以收到异常?

3 个答案:

答案 0 :(得分:1)

这取决于您的制作人配置(producer config

特别注意参数:

  (METADATA_FETCH_TIMEOUT_CONFIG, 60000),
  (TIMEOUT_CONFIG, 10000),
  (RETRY_BACKOFF_MS_CONFIG, 100),
  (RECONNECT_BACKOFF_MS_CONFIG, 1000)

您一定要更改有关设置的参数。所有这些都会影响生产者的行为。

答案 1 :(得分:0)

请在制作人中添加异常处理:

try{
      Producer logic
}
catch (Exception ex) {
      String errorMsg = "Failed to publish events";
      logger.error("Failed to publish events", ex);
      result = Status.BACKOFF;

如果它还没有工作,请告诉我。

答案 2 :(得分:0)

Java / Scala(异步生成器)中较新的8.2生成器为每条消息传递了一个Callback方法。您可以尝试处理回调中的失败。可能会重试。回调方法有两个参数(Exception和MessageMetatData)。任何时候都只能设置一个。成功发送邮件时设置了Meatadata,如果出现错误则设置为Exception。

使用同步生成器虽然你必须设置max.retries和其他配置,如@leshkin指出的那样。