我有一种情况,我正在通过创建消费者来收听来自kafka服务器的消息,现在consumer.on
正在从kafka获取消息现在我必须使用socket.io
将这些消息发送给客户端,所以一旦我收到消息我已经创建了将发出消息的导出方法,所以在下面的代码中我已经导出了start方法,所以我可以启动消费者和socket.io
连接,但它抛出异常./main require不是一个函数。一旦消费者收到消息,我如何使用socket.io
发送消息。
main.js
function start() {
var consumer_client = new kafka.Client(kafkaConn, clientId);
var client = new Client(consumer_client.connectionString, clientId);
var consumer = new HighLevelConsumer(client, topics, options);
startConsumer(consumer);
};
function startConsumer(consumer) {
consumer.on('message', function(message) {
logger.log('info', message.value);
exports = module.exports = function(io) {
io.sockets.on('connection', function(socket) {
socket.emit('ditConsumer', message.value);
});
}
});
consumer.on('error', function(err) {
console.log('error', err);
});
};
exports.start = start;
app.js
var ditconsumer = require('./main');
server.listen(3000, function() {
console.log('Example app listening on port 3000!');
Producer.startProducer();
ditconsumer.start();
});
答案 0 :(得分:0)
希望这项工作适合你:
<强> main.js:强>
var Consumer = {
start:function(scfun) {
var consumer_client = new kafka.Client(kafkaConn, clientId);
var client = new Client(consumer_client.connectionString, clientId);
var consumer = new HighLevelConsumer(client, topics, options);
consumer.on('message', function(message) {
logger.log('info', message.value);
scfun(message.value);
});
consumer.on('error', function(err) {
console.log('error', err);
});
};
};
module.exports = Consumer;
app.js:
var ditconsumer = require('./main');
io.sockets.on('connection',function(){
Producer.startProducer();
ditconsumer.start(function(value){
io.emit('ditConsumer',value)
});
});
server.listen(3000, function() {
console.log('Example app listening on port 3000!');
});