我在本地主机上设置了 Kafka,并尝试在出现网络问题时监控 Kafka Producer 的行为。
即使所有经纪人都关闭了,生产者也没有给出任何错误。我正在使用同步生产者和 Kafka 版本 0.8。
如果所有经纪人都关闭了,生产者是否可以收到异常?
我在本地主机上设置了 Kafka,并尝试在出现网络问题时监控 Kafka Producer 的行为。
即使所有经纪人都关闭了,生产者也没有给出任何错误。我正在使用同步生产者和 Kafka 版本 0.8。
如果所有经纪人都关闭了,生产者是否可以收到异常?
这取决于您的生产者配置(生产者配置)
特别注意参数:
(METADATA_FETCH_TIMEOUT_CONFIG, 60000),
(TIMEOUT_CONFIG, 10000),
(RETRY_BACKOFF_MS_CONFIG, 100),
(RECONNECT_BACKOFF_MS_CONFIG, 1000)
您肯定必须更改有关设置的参数。所有这些参数都会影响生产者的行为。
Java /Scala(异步生产者)中较新的 8.2 生产者具有为每条消息传递的回调方法。您可以尝试处理回调中的失败..可能重试。回调方法有两个参数(Exception 和 MessageMetatData)。任何时候都只会设置一个。当您的消息成功发送时设置元数据,如果出现问题则异常。
使用同步生产者,您将不得不设置 max.retries 和其他配置,正如@leshkin 指出的那样。
请在您的生产者中添加异常处理:
try{
Producer logic
}
catch (Exception ex) {
String errorMsg = "Failed to publish events";
logger.error("Failed to publish events", ex);
result = Status.BACKOFF;
请让我知道它是否仍然无法正常工作。