首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我怎么才能优雅地处理卡夫卡的停电呢?

我怎么才能优雅地处理卡夫卡的停电呢?
EN

Stack Overflow用户
提问于 2015-04-07 20:21:19
回答 2查看 4.5K关注 0票数 17

我正在用0.8.2.1卡夫卡-客户图书馆连接卡夫卡。卡夫卡升天时,我能成功地与人沟通,但当卡夫卡倒下时,我想优雅地处理失败。这是我的配置:

代码语言:javascript
复制
kafkaProperties.setProperty(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, kafkaUrl);
kafkaProperties.setProperty(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
kafkaProperties.setProperty(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
kafkaProperties.setProperty(ProducerConfig.RETRIES_CONFIG, "3");
producer = new KafkaProducer(kafkaProperties);

当Kafka关闭时,我的日志中会出现以下错误:

代码语言:javascript
复制
WARN: 07 Apr 2015 14:09:49.230 org.apache.kafka.common.network.Selector:276 - [] Error in I/O with localhost/127.0.0.1
java.net.ConnectException: Connection refused
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[na:1.7.0_75]
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739) ~[na:1.7.0_75]
at org.apache.kafka.common.network.Selector.poll(Selector.java:238) ~[kafka-clients-0.8.2.1.jar:na]
at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:192) [kafka-clients-0.8.2.1.jar:na]
at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:191) [kafka-clients-0.8.2.1.jar:na]
at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:122) [kafka-clients-0.8.2.1.jar:na]
at java.lang.Thread.run(Thread.java:745) [na:1.7.0_75]

此错误在无限循环中重复,并锁定我的Java应用程序。我尝试过与超时、重试和确认相关的各种配置设置,但是我无法阻止这个循环的发生。

是否有可以防止这种情况的配置设置?我需要尝试不同版本的客户端吗?卡夫卡的停电是如何处理的?

EN

Stack Overflow用户

回答已采纳

发布于 2015-04-07 23:04:59

我发现这种设置组合允许kafka客户端在不保存线程或垃圾日志的情况下快速失败:

代码语言:javascript
复制
kafkaProperties.setProperty(ProducerConfig.METADATA_FETCH_TIMEOUT_CONFIG, "300");
kafkaProperties.setProperty(ProducerConfig.TIMEOUT_CONFIG, "300");
kafkaProperties.setProperty(ProducerConfig.RETRY_BACKOFF_MS_CONFIG, "10000");
kafkaProperties.setProperty(ProducerConfig.RECONNECT_BACKOFF_MS_CONFIG, "10000");

我不喜欢kafka客户端在试图连接到kafka服务器时持有线程,而不是完全异步,但这至少是有功能的。

票数 23
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29500576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档