All writing

camus

A Kafka clone written in Go.

Features

Quick Start

go build .

./camus create-topic orders
./camus server &
./camus produce orders "order-1"

./camus consume mygroup orders 0

./camus consumer-join mygroup consumer-1 orders
./camus consumer-leave mygroup consumer-1

Commands

Command Description
create-topic <name> Create topic with 3 partitions
produce <topic> <data> Send message to topic
consume <group> <topic> <partition> Read messages from partition
consumer-join <group> <member> <topic> Join consumer group
consumer-leave <group> <member> Leave consumer group
server Start TCP server on port 6969

Configuration

Batch writer settings in pkg/storage/log.go: - DefaultBatchSize = 100 - Flush after 100 records - DefaultFlushInterval = 100ms - Flush every 100ms if batch not full

Benchmarks

uv run benchmarks/producer.py
uv run benchmarks/consumer.py