2017-12-19 9 views
1

내가 SASL 인증을 사용하여 nodejs와 카프카의 생산자와 소비자를 만들기 위해 노력하고 있지만, 나는 거의 모든 시도 한 nodejs 카프카 패키지 중 하나에서 사용할 수없는 것 같다 그들 (노드 rdkafka, 카프카 노드, 노 카프카 ....)카프카 nodejs - SASL 인증으로 생산자와 소비자를 만드는 문제

는 노드 rdkafka와 옵션 아래에 시도하지만 외장의 위에 SASL

var Kafka = require('node-rdkafka'); 
var producer = Kafka.Producer({ 
    'debug': 'all', 
    'metadata.broker.list': 'localhost:9092', 
    'security.protocol': 'sasl_plaintext', 
    'sasl.username': 'root', 
    'sasl.password': 'admin!', 
    'sasl.mechanisms': 'PLAIN', 
}); 

// producer.connect(); 
producer.connect(null, (err, metadata) => { 
    console.log(metadata); 
    console.error(err); 
    console.log('Connected') 
}); 

producer.on('ready', function() { 
    try { 
    producer.produce('topic1', null, new Buffer('Awesome'), null, Date.now()) 
    } catch (err) { 
    console.log('A error occured') 
    } 
}); 

// Any errors we encounter, including connection errors 
producer.on('event.error', function(err) { 
    console.log('Error from producer'); 
    console.log(err); 
}) 

producer 
    .on('event.log', function(event) { 
     console.log(event) 
     const loggedEvent = { 
     severity: event.severity, 
     fac: event.fac 
     }; 

     if (event.severity >= 7) { 
     console.log(loggedEvent, event.message); 
     } else if (event.severity === 6 || event.severity === 5) { 
     console.log(loggedEvent, event.message); 
     } else if (event.severity === 4) { 
     console.log(loggedEvent, event.message); 
     } else if (event.severity > 0) { 
     console.log(loggedEvent, event.message); 
     } else { 
     console.log(loggedEvent, event.message); 
     } 
}) 

로 출판 MSG를 제작에 운이 없다 node-rdkafka에 대한 C++ 래퍼로 인한 노드 -gyp 및 도커 문제 관련 문제


https://github.com/Blizzard/node-rdkafka/issues/323

https://github.com/nodejs/node/issues/17732
도 생산자와 소비자 독립형 자바 클래스와 jar 파일 생성 오류를 던져 일부러하지 않고는 Sametime에서 더 출력하는 nodejs 자식 프로세스를 사용하는 자바 클래스를 실행하려고

var cmd = require('child_process').spawn('java', ['-cp', 'NodeKafka-0.0.1-SNAPSHOT.jar', 'node/kafka/NodeKafka/nodeKafkaConsumer.class']); 

//console.log(spawn); 
setInterval(function() { 
cmd.stdout.on('data', function (data) { 
    console.log('stdout: ' + data); // This will print string returned by Main class. 
}); 

},3000); 

Java 및 Python에 비해 Kafka 노드에 대한 많은 종속성 및 오류

요 u kafka 생산자 및 소비자 생성을 위해 SSL을 사용하지 않고 SASL 인증을 지원하는 node-rdkafka 또는 다른 pacakge를 사용하는 데 도움을 받으십시오.

답변

0

Kafka 및 SASL과 함께 Nodejs를 사용하려는 경우 많은 옵션이 없습니다. 내가 아는 한, node-rdkafka만이 공식적으로 그것을 지원합니다. 즉, 저는 1 년 넘게 SASL을 사용해 왔으며 꽤 좋은 고객입니다.

나는 당신의 구성이나 사용 사례를 알고 있지만 일반 텍스트 연결을 통해 SASL 일반을 사용하는 경우, 자격 증명이 일반 텍스트로 네트워크를 통해 전송되므로주의하지 않는다. 노드 rdkafka를 설치하는 경우

당신은 성공적으로 구축하고 활성화에 필요한 모든 기능 (SASL)가 있는지 확인해야합니다. OS에 따라 설치해야 할 정확한 종속성이 약간 다릅니다. 당신이 노드 rdkafka 월호에 붙여 로그를 보면

, 당신은 C 컴파일러를 포함한 모든 종속성을 누락! 당신이 당신의 의존성이 분류 일단 그래서 마지막으로 당신의 Nodejs 클라이언트 논리가 그것을, 잘 보이는

checking for libsasl2 (by pkg-config)... ok 
checking for libsasl2 (by compile)... ok (cached) 
... 
ENABLE_SASL    y 
... 
LIBS      ... -lsasl2 ... 

을 : 필요한 라이브러리는 NPM 출력에, 당신이보고 싶지는 SASL 종속성에 관한 https://github.com/edenhill/librdkafka#requirements

에 나와 있습니다 작동해야합니다.

+0

감사 마이클, 내가 배포에 대한 내 로컬 개발 및 젠킨스 고정 표시기 Windows를 사용하고 있습니다. 이러한 서로 다른 environements은, 문제 –

+0

을 가진 것 같다 rdkafka 노드의 로컬 및 배포 ..Latest 릴리스에 대한 문제를 구축 해결하기 위해 정말 어려운 점점 및 SASL 인증 –

+0

당신이 SASL은 사용할 필요가 모든에 대한 문서 나 예제는 없다 올바르게 설정 한 네 가지 설정은 'security.protocol','sasl.username','sasl.password' 및'sasl.mechanisms '입니다. 문서에 Windows에 관한 섹션이 있습니다 : https://github.com/Blizzard/node-rdkafka#windows. dev와 prod에 대한 환경이 서로 다른 것은 네이티브 라이브러리에서는 항상 까다 롭지 만 node-rdkafka에서는 문제가되지 않습니다. –