我在我的本地主机上设置了Kafka,并试图监控Kafka生产者的行为,以防出现网络问题。
即使当所有代理都关闭时,生产者也不会给出任何错误。我使用的是同步制作器和Kafka 0.8版。
如果所有的代理都宕机了,生产者有没有办法收到异常?
发布于 2015-10-19 23:46:10
这取决于生产者配置(producer config)
尤其要注意参数:
(METADATA_FETCH_TIMEOUT_CONFIG, 60000),
(TIMEOUT_CONFIG, 10000),
(RETRY_BACKOFF_MS_CONFIG, 100),
(RECONNECT_BACKOFF_MS_CONFIG, 1000)当然,您必须更改有关设置的参数。所有这些参数都会影响生产者的行为。
发布于 2015-10-19 23:20:18
请在您的生产者中添加异常处理:
try{
Producer logic
}
catch (Exception ex) {
String errorMsg = "Failed to publish events";
logger.error("Failed to publish events", ex);
result = Status.BACKOFF;如果还是不起作用,请告诉我。
发布于 2015-10-24 00:16:38
Java/Scala中较新的8.2生成器(异步生成器)为每条消息传递了一个回调方法。您可以尝试并处理回调中的失败。可能会重试。回调方法有两个参数(Exceptionand和MessageMetatData)。任何时候都只会设置一个。Meatadata是在您的消息成功发送时设置的,如果出现问题则例外。
然而,使用同步生成器,您必须设置max.retries和其他配置,正如@leshkin指出的那样。
https://stackoverflow.com/questions/33169231
复制相似问题