The documentation you are viewing is for Dapr v1.12 which is an older version of Dapr. For up-to-date documentation, see the latest version.
NATS Streaming
⚠️ Deprecation notice
Warning
This component is deprecated because the NATS Streaming Server was deprecated in June 2023 and no longer receives updates. Users are encouraged to switch to using JetStream as an alternative.
This component will be removed in the Dapr v1.13 release.
Component format
To set up NATS Streaming pub/sub, create a component of type pubsub.natsstreaming
. 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: natsstreaming-pubsub
spec:
type: pubsub.natsstreaming
version: v1
metadata:
- name: natsURL
value: "nats://localhost:4222"
- name: natsStreamingClusterID
value: "clusterId"
- name: concurrencyMode
value: parallel
- name: consumerID # Optional. If not supplied, runtime will create one.
value: "channel1"
# below are subscription configuration.
- name: subscriptionType
value: <REPLACE-WITH-SUBSCRIPTION-TYPE> # Required. Allowed values: topic, queue.
- name: ackWaitTime
value: "" # Optional.
- name: maxInFlight
value: "" # Optional.
- name: durableSubscriptionName
value: "" # Optional.
# following subscription options - only one can be used
- name: deliverNew
value: <bool>
- name: startAtSequence
value: 1
- name: startWithLastReceived
value: false
- name: deliverAll
value: false
- name: startAtTimeDelta
value: ""
- name: startAtTime
value: ""
- name: startAtTimeFormat
value: ""
Warning
The above example uses secrets as plain strings. It is recommended to use a secret store for the secrets.Spec metadata fields
Field | Required | Details | Example |
---|---|---|---|
natsURL | Y | NATS server address URL | “nats://localhost:4222 ” |
natsStreamingClusterID | Y | NATS cluster ID | "clusterId" |
subscriptionType | Y | Subscription type. Allowed values "topic" , "queue" |
"topic" |
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" |
ackWaitTime | N | See here | "300ms" |
maxInFlight | N | See here | "25" |
durableSubscriptionName | N | Durable subscriptions identification name. | "my-durable" |
deliverNew | N | Subscription Options. Only one can be used. Deliver new messages only | "true" , "false" |
startAtSequence | N | Subscription Options. Only one can be used. Sets the desired start sequence position and state | "100000" , "230420" |
startWithLastReceived | N | Subscription Options. Only one can be used. Sets the start position to last received. | "true" , "false" |
deliverAll | N | Subscription Options. Only one can be used. Deliver all available messages | "true" , "false" |
startAtTimeDelta | N | Subscription Options. Only one can be used. Sets the desired start time position and state using the delta | "10m" , "23s" |
startAtTime | N | Subscription Options. Only one can be used. Sets the desired start time position and state | "Feb 3, 2013 at 7:54pm (PST)" |
startAtTimeFormat | N | Must be used with startAtTime . Sets the format for the time |
"Jan 2, 2006 at 3:04pm (MST)" |
concurrencyMode | N | Call the subscriber sequentially (“single” message at a time), or concurrently (in “parallel”). Default: "parallel" |
"single" , "parallel" |
Create a NATS server
Run a NATS server locally using Docker:
docker run -d --name nats-streaming -p 4222:4222 -p 8222:8222 nats-streaming
Interact with the server using the client port: localhost:4222
.
Install NATS on Kubernetes by using the kubectl:
# Single server NATS
kubectl apply -f https://raw.githubusercontent.com/nats-io/k8s/master/nats-server/single-server-nats.yml
kubectl apply -f https://raw.githubusercontent.com/nats-io/k8s/master/nats-streaming-server/single-server-stan.yml
This installs a single NATS-Streaming and NATS into the default
namespace. To interact with NATS, find the service with:
kubectl get svc stan
For example, if installing using the example above, the NATS Streaming address would be:
<YOUR-HOST>:4222
Related links
- Basic schema for a Dapr component.
- Read this guide for instructions on configuring pub/sub components.
- Pub/Sub building block.
- NATS Streaming Deprecation Notice.
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.