Generic CQRS (Command Query Responsibility Segregation) library for event-driven Go services over Kafka.
| Package | Purpose |
|---|---|
base |
Core types: Command, Event, Result, RequestID, CommandCreator |
cdb |
Schema-based CQRS (group-kind-version), BoltDB persistence, K8s CRD |
raw |
Lightweight streaming schemas (group-kind), no versioning |
iam |
Permission system: Initiator, Roles, RoleBindings, PermissionChecker |
topic |
Strimzi KafkaTopic builder with cleanup policies |
go install github.com/bborbe/cqrs@latest| Guide | Purpose |
|---|---|
| Architecture Overview | Package structure, cdb vs raw, data flow, design decisions |
| Base Types | Command, Event, Result, RequestID, CommandCreator |
| Schema and Topics | SchemaID, topic derivation, cleanup policies, K8s CRD |
| Producing Commands | CommandObjectSender, building commands, domain senders |
| Command Consumer | RunCommandConsumerTx, CommandObjectExecutorTx, auto wrapping |
| Command-Result Pattern | Quick reference: send command → get result |
| Result Consumer | ResultChannelProviderForRequestID, cross-process results |
| Event System | EventObjectSender, EventStore, typed message handlers |
| IAM | Initiator, PermissionChecker, Roles, RoleBindings |
BSD-2-Clause