首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >kafka-node,broker宕机后如何保持nodejs连接?

kafka-node,broker宕机后如何保持nodejs连接?
EN

Stack Overflow用户
提问于 2015-05-27 23:00:53
回答 1查看 5.6K关注 0票数 0

我使用的是Ubuntu 14.04。我只需要npm安装kafka-node并使用kafka_0.9.2-0.8.2.1。我有一个nodejs和两个代理,kafka1,kafka2。动物园管理员在kafka1。nodejs客户端代码如下:(node_js_machine格式)当我杀死nodejs当前连接的kafka进程时。nodejs崩溃并退出。主要的问题是错误处理,如果我像下面这样注释4行(问题行),那么即使我杀死了borker,节点也不会崩溃。我想知道当代理nodejs连接关闭时,如何捕获此事件并重新连接到另一个代理?我的错误处理是否正确?

代码语言:javascript
复制
var csUtil        = require('cs-js-common');
var kafka = require('kafka-node'),
    Producer = kafka.Producer,
    KeyedMessage = kafka.KeyedMessage,
    client = new kafka.Client('kafka1:2181/','AppAnalyzerStorm'),
    producer = new Producer(client),
    km = new KeyedMessage('key', 'message');
var kafkaConnected = false;

producer.on('ready',function(){
    kafkaConnected = true;
    log.info("kafka producer is connected");
     console.log("kafka producer is connected");
});


producer.on('error',function(err){
    log.error("error in producer on error"+err);
    console.log("producer error is invoked");

    kafka = require('kafka-node');                                             ===========problem line 1                                      
    Producer = kafka.Producer;                                                ===========problem line 2 
    client = new kafka.Client('kafka1:2181/','AppAnalyzerStorm');  ======problem line 3
    producer = new Producer(client);                                                          ======problem line 4
});


producer.send(xxxx) 
EN

回答 1

Stack Overflow用户

发布于 2015-05-29 01:34:06

将此行添加到末尾,,

代码语言:javascript
复制
process.on('uncaughtException', function (err) {
    console.log(err);
}); 

通过这种方式,如果有任何未捕获的异常,客户端将不会停止。

但是,要连接到error上的其他代理,必须更改上面kafka.Client (problem line number - 3)中使用的代理ip地址。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30486234

复制
相关文章

相似问题

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