JetStream
Detailed documentation on the NATS JetStream component
Component format
To set up JetStream pub/sub, create a component of type pubsub.jetstream
. See the pub/sub broker component file to learn how ConsumerID is automatically generated. Read the How-to: Publish and Subscribe guide on how to create and apply a pub/sub configuration.
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: jetstream-pubsub
spec:
type: pubsub.jetstream
version: v1
metadata:
- name: natsURL
value: "nats://localhost:4222"
- name: jwt # Optional. Used for decentralized JWT authentication.
value: "eyJhbGciOiJ...6yJV_adQssw5c"
- name: seedKey # Optional. Used for decentralized JWT authentication.
value: "SUACS34K232O...5Z3POU7BNIL4Y"
- name: tls_client_cert # Optional. Used for TLS Client authentication.
value: "/path/to/tls.crt"
- name: tls_client_key # Optional. Used for TLS Client authentication.
value: "/path/to/tls.key"
- name: token # Optional. Used for token based authentication.
value: "my-token"
- name: consumerID
value: "channel1"
- name: name
value: "my-conn-name"
- name: streamName
value: "my-stream"
- name: durableName
value: "my-durable"
- name: queueGroupName
value: "my-queue"
- name: startSequence
value: 1
- name: startTime # In Unix format
value: 1630349391
- name: flowControl
value: false
- name: ackWait
value: 10s
- name: maxDeliver
value: 5
- name: backOff
value: "50ms, 1s, 10s"
- name: maxAckPending
value: 5000
- name: replicas
value: 1
- name: memoryStorage
value: false
- name: rateLimit
value: 1024
- name: heartbeat
value: 15s
- name: ackPolicy
value: explicit
- name: deliverPolicy
value: all
- name: domain
value: hub
- name: apiPrefix
value: PREFIX
Spec metadata fields
Field | Required | Details | Example |
---|---|---|---|
natsURL | Y | NATS server address URL | “nats://localhost:4222” |
jwt | N | NATS decentralized authentication JWT | “eyJhbGciOiJ…6yJV_adQssw5c” |
seedKey | N | NATS decentralized authentication seed key | “SUACS34K232O…5Z3POU7BNIL4Y” |
tls_client_cert | N | NATS TLS Client Authentication Certificate | “/path/to/tls.crt” |
tls_client_key | N | NATS TLS Client Authentication Key | “/path/to/tls.key” |
token | N | NATS token based authentication | “my-token” |
consumerID | N | Consumer ID (consumer tag) organizes one or more consumers into a group. Consumers with the same consumer ID work as one virtual consumer; for example, a message is processed only once by one of the consumers in the group. If the consumerID is not provided, the Dapr runtime set it to the Dapr application ID (appID ) value. | “channel1” |
name | N | NATS connection name | “my-conn-name” |
streamName | N | Name of the JetStream Stream to bind to | “my-stream” |
durableName | N | Durable name | “my-durable” |
queueGroupName | N | Queue group name | “my-queue” |
startSequence | N | Start Sequence | 1 |
startTime | N | Start Time in Unix format | 1630349391 |
flowControl | N | Flow Control | true |
ackWait | N | Ack Wait | 10s |
maxDeliver | N | Max Deliver | 15 |
backOff | N | BackOff | “50ms, 1s, 5s, 10s” |
maxAckPending | N | Max Ack Pending | 5000 |
replicas | N | Replicas | 3 |
memoryStorage | N | Memory Storage | false |
rateLimit | N | Rate Limit | 1024 |
heartbeat | N | Heartbeat | 10s |
ackPolicy | N | Ack Policy | explicit |
deliverPolicy | N | One of: all, last, new, sequence, time | all |
domain | N | [JetStream Leafondes] | HUB |
apiPrefix | N | [JetStream Leafnodes] | PREFIX |
Create a NATS server
You can run a NATS Server with JetStream enabled locally using Docker:
docker run -d -p 4222:4222 nats:latest -js
You can then interact with the server using the client port: localhost:4222
.
Install NATS JetStream on Kubernetes by using the helm:
helm repo add nats https://nats-io.github.io/k8s/helm/charts/
helm install --set nats.jetstream.enabled=true my-nats nats/nats
This installs a single NATS server into the default
namespace. To interact with NATS, find the service with:
kubectl get svc my-nats
For more information on helm chart settings, see the Helm chart documentation.
Create JetStream
It is essential to create a NATS JetStream for a specific subject. For example, for a NATS server running locally use:
nats -s localhost:4222 stream add myStream --subjects mySubject
Related links
- Basic schema for a Dapr component
- Read this guide for instructions on configuring pub/sub components
- Pub/Sub building block
- JetStream Documentation
- NATS CLI
Last modified June 19, 2023: Merge pull request #3565 from dapr/aacrawfi/skip-secrets-close (b1763bf)