Kafkagosaur is a Kafka client for Deno built using WebAssembly. The project binds to the kafka-go library.
See this article for an overview of its inner workings.
- Writer
- Reader
- SASL
- TLS
- Deno streams
For comprehensive examples on how to use kafkagosaur, head over to the provided examples.
To write a message, first create KafkaWriter instance using the createWriter
function on the KafkaGoSaur instance:
import KafkaGoSaur from "https://deno.land/x/kafkagosaur/mod.ts";
const kafkaGoSaur = new KafkaGoSaur();
const writer = await kafkaGoSaur.createWriter({
broker: "localhost:9092",
topic: "test-0",
});
const enc = new TextEncoder();
const msgs = [{ value: enc.encode("value") }];
await writer.writeMessages(msgs);To read a message, first create KafkaReader instance using the createReader
function on the KafkaGoSaur instance:
import KafkaGoSaur from "https://deno.land/x/kafkagosaur/mod.ts";
const kafkaGoSaur = new KafkaGoSaur();
const reader = await kafkaGoSaur.createReader({
brokers: ["localhost:9092"],
topic: "test-0",
});
const readMsg = await reader.readMessage();To run the provided examples, ensure you have docker up and running. Then start the kafka broker using
make docker-upTo run the writer example
deno run --allow-read --allow-net --unstable examples/writer.tsTo run the reader example
deno run --allow-read --allow-net --unstable examples/reader.tsThe API documentation is hosted here.
To build the WebAssembly module, first run
make build-wasmTo run the tests, ensure first you have docker up and running. Then start the kafka broker using
make docker-upThen run
make testThe Deno benchmarks are located in bench and can be run via
deno run --allow-read --allow-net --allow-env --unstable bench/reader.tsdeno run --allow-read --allow-net --allow-env --unstable bench/writer.ts| kafka-go1 | kafkagosaur (DialBackend.Node) |
kafkagosaur (DialBackend.Deno) |
|
|---|---|---|---|
| fetchMessage | 5236 ± 743 | 2760 ± 376 | 2678 ± 361 |
| writeMessages2 | 5333 ± 148 | 4455 ± 159 | N/A3 |
- 2,6 GHz 6-Core Intel Core i7
- Confluent Cloud Basic cluster; 6 partitions
Kafkgagosaur is in early stage of development. Nevertheless your contributions are highly valued and welcomed! Feel free to ask for new features, report bugs, or submit your code.
