Koa与Kafka - 无法产生kafka.connect()

时间:2014-07-15 21:12:15

标签: javascript node.js apache-kafka koa

我是Koa的新手,但是设置了一个使用Kafka的应用程序。我正在使用kafkaesque(https://github.com/pelger/Kafkaesque)。我试过了yield* kafkaesque.tearUp()。结果:

cb(err);

^
TypeError: undefined is not a function

我也尝试了kafkaesque.tearUp(function *() {...})但是这也不起作用 - 只有function()样式的回调有效。是否可以以Koa方式使用这些类型的示例?我可以根据需要处理回调,但现在不能使用代码,因为我需要在连接Kafka(kafkaesque.tearUp)并设置主题(kafkaesque.poll)之后调用yield next

1 个答案:

答案 0 :(得分:2)

我终于能够通过使用“thunking”获得kafkaesque的工作:

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