首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >kafkajs -断开连接后优雅地停止kafkajs实例

kafkajs -断开连接后优雅地停止kafkajs实例
EN

Stack Overflow用户
提问于 2020-03-31 14:04:41
回答 1查看 3K关注 0票数 2

我在生产测试和集成测试中都使用kafkajs。

在进行所有测试之前,我将使用生产者&消费者连接/订阅/运行(EachMeassage)创建一个kafkajs实例.经过所有的测试,我想优雅地停止所有节点进程,包括kafkajs组件。

我实际上是这么做的

代码语言:javascript
复制
export function stopHelper(): Promise<void> {
    return new Promise<void>((resolve, reject) => {
        if (kafkaHelperState === kafkaHelperStateStatus.running) {
            kafkaHelperState = kafkaHelperStateStatus.stopping
            log.debug("stopHelper", kafkaHelperState);
            Promise.all([producer.disconnect, consumer.disconnect])
                .then(() => {
                    kafkaHelperState = kafkaHelperStateStatus.stopped
                    log.info("stopHelper", kafkaHelperState);
                    resolve()
                })
                .catch(error => reject(error))
        } else {
            log.warn("stopHelper", "kafkaHelper is not " + kafkaHelperStateStatus.running)
        }
    })
}

承诺似乎起作用了。我可以看到,我的集成测试套件已经完成,生产者和消费者都断开了连接。但是我的节点进程仍然在运行,什么也不做。

在那之前我用的是卡夫卡节点。当我停止使用者时,我的节点进程就结束了,而不必指定任何process.exit(0)

是否有一种方法可以优雅地销毁节点进程中的kafkajs实例?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-19 17:58:25

代码语言:javascript
复制
Promise.all([producer.disconnect(), consumer.disconnect()])

而不是

代码语言:javascript
复制
Promise.all([producer.disconnect, consumer.disconnect])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60952507

复制
相关文章

相似问题

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