Official Go client SDK for Apache Iggy message streaming.
The client speaks the VSR wire protocol over TCP, with or without TLS, in a blocking implementation. VSR is the only protocol it supports.
go get github.com/apache/iggy/foreign/go
Build and start a VSR server from a checkout of this repository:
cargo build --bin iggy-server IGGY_SYSTEM_PATH=/tmp/iggy-go \ IGGY_TCP_ADDRESS=127.0.0.1:8090 \ IGGY_HTTP_ENABLED=false IGGY_QUIC_ENABLED=false IGGY_WEBSOCKET_ENABLED=false \ IGGY_ROOT_USERNAME=iggy IGGY_ROOT_PASSWORD=iggy \ target/debug/iggy-server
QUIC, WebSocket and HTTP are enabled by default on ports 8080, 8092 and 3000. Disable the ones you do not need so they cannot race with another process.
SendMessages returns the placements the server committed. Delivery is at-least-once. A request that hits a dropped connection is replayed over a fresh one, and a fresh connection registers a new client identity, so the server cannot match the replay against the original and the batch may commit twice. Consumers that need exactly-once handling deduplicate on the message id.
A confirmation reports an in-memory commit, not a flush to disk, and an empty confirmation list is a valid success.
Unit tests need nothing running:
go test ./...
The end-to-end suite runs against a server at the address in IGGY_TCP_ADDRESS and skips when that variable is unset:
IGGY_TCP_ADDRESS=127.0.0.1:8090 go test ./tests
Add IGGY_TCP_TLS_ENABLED=true to run the TLS cases against a server started with IGGY_TCP_TLS_ENABLED=true and the certificate pair in core/certs.
Before creating a pull request, please run golangci-lint and fix any reported lint issues:
golangci-lint run