Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

README.md

NATS Streaming Channels

JetStream channels are alpha-quality Channels that are backed by JetStream.

They offer:

  • Persistence
    • If the Channel's Pod goes down, all events already ACKed by the Channel will persist and be retransmitted when the Pod restarts.
  • Redelivery attempts
    • If downstream rejects an event, that request is attempted again. NOTE: downstream must successfully process the event within one minute or the delivery is assumed to have failed and will be reattempted.

They do not offer:

  • Ordering guarantees
    • Events seen downstream may not occur in the same order they were inserted into the Channel.

Deployment steps

  1. Setup Knative Eventing.

  2. If not done already, install NATS JetStream

  3. Apply the NATSS configuration (from project root):

    ko apply -f ./config
  4. Create JetStream channels:

     apiVersion: messaging.knative.dev/v1alpha1
     kind: NatsJetStreamChannel
     metadata:
         name: channel-defaults
         namespace: knative-eventing

Components

The major components are:

  • JetStream
  • JetStream Channel Controller
  • JetStream Channel Dispatcher

The JetStream Channel Controller is located in one Pod.

kubectl get deployment -n knative-eventing jetstream-ch-controller

The JetStream Channel Dispatcher receives and distributes all events. There is a single Dispatcher for all JetStream Channels.

By default the components are configured to connect to NATS at nats://nats.nats-io.svc.cluster.local:4222.