NATS C Client with JetStream and Streaming support 3.9.0-beta The nats.io C Client, Supported by Synadia Communications Inc.

Public Attributes | List of all members
jsStreamConfig Struct Reference
Types

`#include <nats.h>`

## Public Attributes
const char * | Name
const char * | Description
const char ** | Subjects
int | SubjectsLen
jsRetentionPolicy | Retention
int64_t | MaxConsumers
int64_t | MaxMsgs
int64_t | MaxBytes
int64_t | MaxAge
int64_t | MaxMsgsPerSubject
int32_t | MaxMsgSize
jsDiscardPolicy | Discard
jsStorageType | Storage
int64_t | Replicas
bool | NoAck
const char * | Template
int64_t | Duplicates
jsPlacement * | Placement
jsStreamSource * | Mirror
jsStreamSource ** | Sources
int | SourcesLen
bool | Sealed
| Seal a stream so no messages can get our or in. More...
bool | DenyDelete
| Restrict the ability to delete messages. More...
bool | DenyPurge
| Restrict the ability to purge messages. More...
bool | AllowRollup
| Allow messages to be placed into the system and purge all older messages using a special message header. More...
jsRePublish * | RePublish
| Allow republish of the message after being sequenced and stored. More...
bool | AllowDirect
| Allow higher performance, direct access to get individual messages. E.g. KeyValue. More...
bool | MirrorDirect
| Allow higher performance and unified direct access for mirrors as well. More...
bool | DiscardNewPerSubject
| Allow KV like semantics to also discard new on a per subject basis. More...
natsMetadata | Metadata
| A user-provided array of key/value pairs, encoded as a string array [n1, v1, n2, v2, ...] representing key/value pairs {n1:v1, n2:v2, ...}. More...
jsStorageCompression | Compression
| js_StorageCompressionNone (default) or js_StorageCompressionS2. More...
uint64_t | FirstSeq
| the starting sequence number for the stream. More...
jsSubjectTransformConfig | SubjectTransform
| Applies a subject transform (to matching messages) before doing anything else when a new message is received. More...
jsStreamConsumerLimits | ConsumerLimits
| Sets the limits on certain options on all consumers of the stream. More...

## Detailed Description

Configuration of a JetStream stream.

There are sensible defaults for most. If no subjects are given the name will be used as the only subject.

In order to add/update a stream, a configuration needs to be set. The typical usage would be to initialize all required objects on the stack and configure them, then pass the pointer to the configuration to js_AddStream or js_UpdateStream.

Note
  The strings are applications owned and will not be freed by the library.
  NATS server 2.10 added user-provided Metadata, storage Compression type, FirstSeq to specify the starting sequence number, and SubjectTransform.

See also
  jsStreamConfig_Init

jsStreamConfig sc;
jsPlacement p;
jsStreamSource m;
jsExternalStream esm;
jsStreamSource s1;
jsStreamSource s2;
jsExternalStream esmS2;
const char *subjects[] = {"foo", "bar"};
const char *tags[] = {"tag1", "tag2"};
jsStreamSource *sources[] = {&s1, &s2};
jsRePublish rp;
jsStreamConfig_Init(&sc);
jsPlacement_Init(&p);
p.Cluster = "MyCluster";
p.Tags = tags;
p.TagsLen = 2;
jsStreamSource_Init(&m);
m.Name = "AStream";
m.OptStartSeq = 100;
m.FilterSubject = "foo";
jsExternalStream_Init(&esm);
esm.APIPrefix = "mirror.prefix.";
esm.DeliverPrefix = "deliver.prefix.";
m.External = &esm;
jsStreamSource_Init(&s1);
s1.Name = "StreamOne";
s1.OptStartSeq = 10;
s1.FilterSubject = "stream.one";
jsStreamSource_Init(&s2);
s2.Name = "StreamTwo";
s2.FilterSubject = "stream.two";
jsExternalStream_Init(&esmS2);
esmS2.APIPrefix = "mirror.prefix.";
esmS2.DeliverPrefix = "deliver.prefix.";
s2.External = &esmS2;
sc.Name = "MyStream";
sc.Subjects = subjects;
sc.SubjectsLen = 2;
sc.Retention = js_InterestPolicy;
sc.Replicas = 3;
sc.Placement = &p;
sc.Mirror = &m;
sc.Sources = sources;
sc.SourcesLen = 2;
// For RePublish subject:
jsRePublish_Init(&rp);
rp.Source = ">";
rp.Destination = "RP.>";
sc.RePublish = &rp;
s = js_AddStream(&si, js, &sc, NULL, &jerr);

## Member Data Documentation

## ◆ Name

const char* jsStreamConfig::Name

## ◆ Description

const char* jsStreamConfig::Description

## ◆ Subjects

const char** jsStreamConfig::Subjects

## ◆ SubjectsLen

int jsStreamConfig::SubjectsLen

## ◆ Retention

jsRetentionPolicy jsStreamConfig::Retention

## ◆ MaxConsumers

int64_t jsStreamConfig::MaxConsumers

## ◆ MaxMsgs

int64_t jsStreamConfig::MaxMsgs

## ◆ MaxBytes

int64_t jsStreamConfig::MaxBytes

## ◆ MaxAge

int64_t jsStreamConfig::MaxAge

## ◆ MaxMsgsPerSubject

int64_t jsStreamConfig::MaxMsgsPerSubject

## ◆ MaxMsgSize

int32_t jsStreamConfig::MaxMsgSize

## ◆ Discard

jsDiscardPolicy jsStreamConfig::Discard

## ◆ Storage

jsStorageType jsStreamConfig::Storage

## ◆ Replicas

int64_t jsStreamConfig::Replicas

## ◆ NoAck

bool jsStreamConfig::NoAck

## ◆ Template

const char* jsStreamConfig::Template

## ◆ Duplicates

int64_t jsStreamConfig::Duplicates

## ◆ Placement

jsPlacement* jsStreamConfig::Placement

## ◆ Mirror

jsStreamSource* jsStreamConfig::Mirror

## ◆ Sources

jsStreamSource** jsStreamConfig::Sources

## ◆ SourcesLen

int jsStreamConfig::SourcesLen

## ◆ Sealed

bool jsStreamConfig::Sealed

## ◆ DenyDelete

bool jsStreamConfig::DenyDelete

## ◆ DenyPurge

bool jsStreamConfig::DenyPurge

## ◆ AllowRollup

bool jsStreamConfig::AllowRollup

## ◆ RePublish

jsRePublish* jsStreamConfig::RePublish

## ◆ AllowDirect

bool jsStreamConfig::AllowDirect

## ◆ MirrorDirect

bool jsStreamConfig::MirrorDirect

## ◆ DiscardNewPerSubject

bool jsStreamConfig::DiscardNewPerSubject

## ◆ Metadata

natsMetadata jsStreamConfig::Metadata

## ◆ Compression

jsStorageCompression jsStreamConfig::Compression

## ◆ FirstSeq

uint64_t jsStreamConfig::FirstSeq

## ◆ SubjectTransform

jsSubjectTransformConfig jsStreamConfig::SubjectTransform

## ◆ ConsumerLimits

jsStreamConsumerLimits jsStreamConfig::ConsumerLimits

The documentation for this struct was generated from the following file:

- nats.h