kafka js - изящно остановить экземпляр kafka js после отключения - PullRequest
1 голос
/ 31 марта 2020

Я использую kafka js как в своих производственных, так и в интеграционных тестах.

Перед всеми моими тестами я создаю экземпляр kafka js с подключением, подпиской / выполнением производителя и потребителя (eachMeassage) ) ... После всех моих тестов я хочу изящно остановить весь процесс моего узла, включая компоненты kafka js.

На самом деле я делаю это:

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)
        }
    })
}

Обещания, кажется, работают , Я вижу, что мой комплект интеграционных тестов завершен с отключением как производителя, так и потребителя. Но мой процесс узла все еще работает, ничего не делая.

До этого я использовал kafka-node. Когда я остановил потребителя, процесс моего узла завершается без указания какого-либо process.exit (0)

Есть ли способ изящно уничтожить экземпляр kafka js в процесс узла?

...