@resonatehq/kafka is the official Kafka transport binding for Resonate.
npm install @resonatehq/kafkaapp.ts
import { type Context, Resonate } from "@resonatehq/sdk";
import { Kafka } from "@resonatehq/kafka";
async function main() {
const transport = new Kafka({ brokers: ["localhost:9092"] });
await transport.start();
const resonate = new Resonate({ transport });
resonate.register(foo);
resonate.register(bar);
const v = await resonate.run("foo.1", foo);
console.log(v);
resonate.stop();
}
function* foo(ctx: Context): Generator {
return yield* ctx.rpc("bar");
}
function bar(ctx: Context) {
return "hello world";
}
main()Create the following topics:
- resonate
- default
Start the server:
resonate dev --api-kafka-enable --aio-kafka-enableStart the client:
npx ts-node app.ts