nats
| Kind | ffi-zig |
|---|---|
| Categories | messaging networking ffi |
| Keywords | nats messaging pubsub queue streaming |
NATS client for Kit using native Zig FFI
Files
| File | Description |
|---|---|
kit.toml | Package manifest with metadata and dependencies |
src/main.kit | Pub/sub, request/reply, and queue group APIs |
zig/kit_ffi.zig | Shared FFI types and Kit value constructors |
zig/nats.zig | NATS protocol parser and connection management |
tests/nats.test.kit | Verifies module import works correctly |
examples/basic.kit | Connect, ping, publish, and subscribe demo |
examples/pubsub.kit | Publish/subscribe pattern with wildcard subjects |
examples/queue-groups.kit | Load balancing with queue groups |
examples/request-reply.kit | Request/reply pattern with echo server |
LICENSE | MIT license file |
Architecture
Pub/Sub Pattern
sequenceDiagram
participant Publisher
participant NATS Server
participant Subscriber1
participant Subscriber2
Subscriber1->>NATS Server: Subscribe "events.*"
Subscriber2->>NATS Server: Subscribe "events.*"
Publisher->>NATS Server: Publish "events.user"
NATS Server->>Subscriber1: Message
NATS Server->>Subscriber2: Message
Request/Reply Pattern
sequenceDiagram
participant Requester
participant NATS Server
participant Responder
Responder->>NATS Server: Subscribe "service.api"
Requester->>NATS Server: Request "service.api"
NATS Server->>Responder: Message + Reply Subject
Responder->>NATS Server: Publish to Reply Subject
NATS Server->>Requester: Response
FFI Structure
graph TD
A[Kit Code] -->|import Nats| B[src/main.kit]
B -->|extern-zig| C[zig/nats.zig]
C --> D[zig/kit_ffi.zig]
D --> E[NATS Protocol]
E --> F[NATS Server]
Dependencies
No Kit package dependencies.
Installation
kit add gitlab.com/kit-lang/packages/kit-nats.gitUsage
import Kit.NatsLicense
MIT License - see LICENSE for details.
Exported Functions & Types
NatsError
NATS error type for typed error handling. Variants distinguish between connection and command errors.
Variants
NatsConnectionError {message}NatsCommandError {message}