r<-chan
Remote Go channels, backed by Redis Streams
go get github.com/ndyakov/rchan
// process A (producer)
ch, _ := rchan.New[Job](ctx, rdb, "jobs", rchan.WithCapacity(16))
sc := ch.SendC()
sc <- Job{ID: 1} // blocks when 16 are in flight
close(sc) // propagates like close(ch)
// process B (consumer) — competing consumers, exactly-one delivery
ch, _ := rchan.New[Job](ctx, rdb, "jobs", rchan.WithCapacity(16))
for job := range ch.C() {
process(job)
}
- Native operators both ways:
sc <- v,<-ch.C(),range,selectwith working try-send - True rendezvous on capacity 0 — senders park until a live receiver takes the value
closepropagation with drain semantics, cluster-wide- At-least-once delivery with crash reclaim (XAUTOCLAIM reaper); opt-in at-most-once
- Batched reads + async acks: ~7× throughput, below one RTT per value