rdkafka
Version:
Direct node wrappers over C++ librdkafka API
72 lines (59 loc) • 2.69 kB
Markdown
[](https://www.npmjs.com/package/rdkafka)
[](https://travis-ci.org/wikimedia/node-rdkafka)
[](https://david-dm.org/wikimedia/node-rdkafka)
[](https://github.com/wikimedia/node-rdkafka/blob/master/LICENSE)
Node.js bindings for the C++ API of the [librdkafka](https://github.com/edenhill/librdkafka) client for [Apache Kafka](http://kafka.apache.org) messaging system. The library binds to the `Producer` and high-level `KafkaConsumer` and tries to mimic the API of `librdkafka`, returning promises where appropriate. This client requires Apache Kafka >0.9 and node.js >4
Example usage:
```javascript
const kafka = require('rdkafka');
const producer = new kafka.Producer({
'metadata.broker.list': 'localhost:9092'
});
producer.produce('example_topic', 0, 'Test message')
.then(() => {
const consumer = new kafka.KafkaConsumer({
'metadata.broker.list': 'localhost:9092',
'group.id': 'my_group_id',
'fetch.wait.max.ms': 1,
'fetch.min.bytes': 1,
'queue.buffering.max.ms': 1,
'enable.auto.commit': false
});
consumer.subscribe([ 'example_topic' ]);
return consumer.consume()
.then((message) => {
console.log(`Got a message: \n` +
` topic: ${message.topicName}\n` +
` partition: ${message.partition}\n` +
` offset: ${message.offset}\n` +
` payload: ${message.payload.toString()}\n`);
const commitRequest = new kafka.TopicPartition(message.topic,
message.partition,
message.offset + 1);
return consumer.commit([ commitRequest ]);
})
.then(() => {
producer.close();
consumer.close();
});
});
```
Can be found [here](https://github.com/wikimedia/node-rdkafka/blob/master/docs/api.md)
`binding.gyp` supports buidling with the local copy of librdkafka in
deps/librdkafka, or on Linux with a globally installed librdkafka binaries and
headers.
Building with the local copy of librdkafka is the default. Just do
```
git submodule update --init
node-gyp configure
node-gyp build
````
To build against a globally installed librdkafka (e.g. one installed
with .deb packages), do
```
node-gyp --BUILD_LIBRDKAKFA=0 build
```