Коа с Кафкой - не может дать kafka.connect()

Я новичок в Koa, но настроил приложение, использующее Kafka. Я использую kafkaesque (https://github.com/pelger/Kafkaesque). Я пробовал yield* kafkaesque.tearUp(). Результат:

cb(err);

^
TypeError: undefined is not a function

Я также пробовал kafkaesque.tearUp(function *() {...}), но это тоже не работает - работает только обратный вызов в стиле function (). Можно ли работать с этими типами примеров в стиле Koa? Я могу работать с обратными вызовами, если это необходимо, но не могу сейчас использовать работу с кодом, потому что мне нужно вызвать yield next после подключения Kafka (kafkaesque.tearUp) и установки темы (kafkaesque.poll).


person arilaan    schedule 15.07.2014    source источник


Ответы (1)


Наконец-то я смог заставить работать кафка, используя «thunking»:

function tearUpThunk(kafka) {
    return function(callback) {
        kafka.tearUp(callback);
    }
}

function pollThunk(kafka, options) {
    return function(callback) {
        kafka.tearUp(options, callback);
    }
}

yield tearUpThunk(kafka) //Previously kafka.tearUp(function() {
yield pollThunk(kafka, options); //      kafka.poll(options, function() { etc.

Мне просто нужно было убедиться, что каждая функция возвращает обратный вызов таким образом. Благодаря http://strongloop.com/strongblog/node-js-express-introduction-koa-js-zone/ за объяснение этого и других шаблонов Koa!

Библиотека узлов thunkify также может упростить эту задачу (https://github.com/visionmedia/node-thunkify).

person arilaan    schedule 16.07.2014
comment
Спасибо. У меня такая же проблема. this пропадает при простом использовании метода. В LiveScript мне пришлось писать result = yield -> obj.method it вместо result = yield obj.method - person K..; 17.02.2015