7.3 KiB
| type | title | linkTitle | description | aliases | |
|---|---|---|---|---|---|
| docs | JetStream | JetStream | Detailed documentation on the NATS JetStream component |
|
Component format
To setup JetStream pubsub create a component of type pubsub.jetstream. See
[this guide]({{< ref
"howto-publish-subscribe.md#step-1-setup-the-pubsub-component" >}}) on how to
create and apply a pubsub 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: 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: deliverAll
value: false
- 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: hearbeat
value: 15s
- name: ackPolicy
value: explicit
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" |
| 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 |
| deliverAll | N | Set deliver all as Replay Policy | true |
| 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 |
| hearbeat | N | Hearbeat | 10s |
| ackPolicy | N | Ack Policy | explicit |
Create a NATS server
{{< tabs "Self-Hosted" "Kubernetes">}}
{{% codetab %}} 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.
{{% /codetab %}}
{{% codetab %}} 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.
{{% /codetab %}}
{{< /tabs >}}
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]({{< ref component-schema >}})
- Read [this guide]({{< ref "howto-publish-subscribe.md#step-2-publish-a-topic" >}}) for instructions on configuring pub/sub components
- [Pub/Sub building block]({{< ref pubsub >}})
- JetStream Documentation
- NATS CLI