NATS C Client with JetStream and Streaming support  3.9.1
The nats.io C Client, Supported by Synadia Communications Inc.
Types

Classes

struct  __natsClientConfig
 An initial configuration for NATS client. Provides control over the threading model, and sets many default option values. More...
 
struct  natsMsgList
 A list of NATS messages. More...
 
struct  natsMetadata
 A type to represent user-provided metadata, a list of k=v pairs. More...
 
struct  jsPubOptions
 
struct  jsPlacement
 
struct  jsExternalStream
 
struct  jsStreamSource
 
struct  jsRePublish
 
struct  jsSubjectTransformConfig
 
struct  jsStreamConsumerLimits
 
struct  jsStreamConfig
 
struct  jsLostStreamData
 
struct  jsStreamStateSubject
 
struct  jsStreamStateSubjects
 
struct  jsStreamState
 
struct  jsPeerInfo
 
struct  jsClusterInfo
 
struct  jsStreamSourceInfo
 
struct  jsStreamAlternate
 
struct  jsStreamInfo
 
struct  jsStreamInfoList
 
struct  jsStreamNamesList
 
struct  jsConsumerConfig
 
struct  jsConsumerSequenceMismatch
 
struct  jsSubOptions
 
struct  jsSequencePair
 
struct  jsSequenceInfo
 
struct  jsConsumerInfo
 
struct  jsConsumerInfoList
 
struct  jsConsumerNamesList
 
struct  jsConsumerPauseResponse
 
struct  jsAPIStats
 
struct  jsAccountLimits
 
struct  jsTier
 
struct  jsAccountInfo
 
struct  jsMsgMetaData
 
struct  jsPubAck
 
struct  jsPubAckErr
 
struct  jsDirectGetMsgOptions
 
struct  jsFetchRequest
 
struct  jsOptions
 
struct  kvConfig
 
struct  kvWatchOptions
 
struct  kvPurgeOptions
 
struct  kvEntryList
 A list of KeyValue store entries. More...
 
struct  kvKeysList
 A list of KeyValue store keys. More...
 

Typedefs

typedef struct __natsConnection natsConnection
 A connection to a NATS Server. More...
 
typedef struct __natsStatistics natsStatistics
 Statistics of a natsConnection. More...
 
typedef struct __natsSubscription natsSubscription
 Interest on a given subject. More...
 
typedef struct __natsMsg natsMsg
 A structure holding a subject, optional reply and payload. More...
 
typedef struct __natsOptions natsOptions
 Way to configure a natsConnection. More...
 
typedef char natsInbox
 Unique subject often used for point-to-point communication. More...
 
typedef struct __natsClientConfig natsClientConfig
 An initial configuration for NATS client. Provides control over the threading model, and sets many default option values. More...
 
typedef struct natsMsgList natsMsgList
 A list of NATS messages. More...
 
typedef struct natsMetadata natsMetadata
 A type to represent user-provided metadata, a list of k=v pairs. More...
 
typedef struct __jsCtx jsCtx
 
typedef struct jsPubOptions jsPubOptions
 
typedef struct jsPlacement jsPlacement
 
typedef struct jsExternalStream jsExternalStream
 
typedef struct jsStreamSource jsStreamSource
 
typedef struct jsRePublish jsRePublish
 
typedef struct jsSubjectTransformConfig jsSubjectTransformConfig
 
typedef struct jsStreamConsumerLimits jsStreamConsumerLimits
 
typedef struct jsStreamConfig jsStreamConfig
 
typedef struct jsLostStreamData jsLostStreamData
 
typedef struct jsStreamStateSubject jsStreamStateSubject
 
typedef struct jsStreamStateSubjects jsStreamStateSubjects
 
typedef struct jsStreamState jsStreamState
 
typedef struct jsPeerInfo jsPeerInfo
 
typedef struct jsClusterInfo jsClusterInfo
 
typedef struct jsStreamSourceInfo jsStreamSourceInfo
 
typedef struct jsStreamAlternate jsStreamAlternate
 
typedef struct jsStreamInfo jsStreamInfo
 
typedef struct jsStreamInfoList jsStreamInfoList
 
typedef struct jsStreamNamesList jsStreamNamesList
 
typedef struct jsConsumerConfig jsConsumerConfig
 
typedef struct jsConsumerSequenceMismatch jsConsumerSequenceMismatch
 
typedef struct jsSubOptions jsSubOptions
 
typedef struct jsSequencePair jsSequencePair
 
typedef struct jsSequenceInfo jsSequenceInfo
 
typedef struct jsConsumerInfo jsConsumerInfo
 
typedef struct jsConsumerInfoList jsConsumerInfoList
 
typedef struct jsConsumerNamesList jsConsumerNamesList
 
typedef struct jsConsumerPauseResponse jsConsumerPauseResponse
 
typedef struct jsAPIStats jsAPIStats
 
typedef struct jsAccountLimits jsAccountLimits
 
typedef struct jsTier jsTier
 
typedef struct jsAccountInfo jsAccountInfo
 
typedef struct jsMsgMetaData jsMsgMetaData
 
typedef struct jsPubAck jsPubAck
 
typedef struct jsPubAckErr jsPubAckErr
 
typedef struct jsDirectGetMsgOptions jsDirectGetMsgOptions
 
typedef struct jsFetchRequest jsFetchRequest
 
typedef void(* jsFetchCompleteHandler) (natsConnection *nc, natsSubscription *sub, natsStatus s, void *closure)
 Callback used to indicate that the work of js_PullSubscribeAsync is done. More...
 
typedef bool(* jsFetchNextHandler) (int *messages, int64_t *maxBytes, natsSubscription *sub, void *closure)
 Callback used to customize flow control for js_PullSubscribeAsync. More...
 
typedef struct jsOptions jsOptions
 
typedef struct __kvStore kvStore
 
typedef struct __kvEntry kvEntry
 
typedef struct __kvStatus kvStatus
 
typedef struct __kvWatcher kvWatcher
 
typedef struct kvConfig kvConfig
 
typedef struct kvWatchOptions kvWatchOptions
 
typedef struct kvPurgeOptions kvPurgeOptions
 
typedef struct kvEntryList kvEntryList
 A list of KeyValue store entries. More...
 
typedef struct kvKeysList kvKeysList
 A list of KeyValue store keys. More...
 
typedef struct __stanConnection stanConnection
 A connection to a NATS Streaming Server. More...
 
typedef struct __stanSubscription stanSubscription
 Interest on a given channel. More...
 
typedef struct __stanMsg stanMsg
 The Streaming message. More...
 
typedef struct __stanConnOptions stanConnOptions
 Way to configure a stanConnection. More...
 
typedef struct __stanSubOptions stanSubOptions
 Way to configure a stanSubscription. More...
 

Enumerations

enum  jsRetentionPolicy { js_LimitsPolicy = 0 , js_InterestPolicy , js_WorkQueuePolicy }
 
enum  jsDiscardPolicy { js_DiscardOld = 0 , js_DiscardNew }
 
enum  jsStorageType { js_FileStorage = 0 , js_MemoryStorage }
 
enum  jsStorageCompression { js_StorageCompressionNone = 0 , js_StorageCompressionS2 }
 
enum  jsDeliverPolicy {
  js_DeliverAll = 0 , js_DeliverLast , js_DeliverNew , js_DeliverByStartSequence ,
  js_DeliverByStartTime , js_DeliverLastPerSubject
}
 
enum  jsAckPolicy { js_AckExplicit = 0 , js_AckNone , js_AckAll }
 
enum  jsReplayPolicy { js_ReplayInstant = 0 , js_ReplayOriginal }
 
enum  kvOperation { kvOp_Unknown = 0 , kvOp_Put , kvOp_Delete , kvOp_Purge }
 

Detailed Description

NATS Types.

Typedef Documentation

◆ natsConnection

typedef struct __natsConnection natsConnection

A natsConnection represents a bare connection to a NATS Server. It will send and receive byte array payloads.

◆ natsStatistics

typedef struct __natsStatistics natsStatistics

Tracks various statistics received and sent on a connection, including counts for messages and bytes.

◆ natsSubscription

typedef struct __natsSubscription natsSubscription

A natsSubscription represents interest in a given subject.

◆ natsMsg

typedef struct __natsMsg natsMsg

natsMsg is a structure used by Subscribers and natsConnection_PublishMsg().

◆ natsOptions

typedef struct __natsOptions natsOptions

Options can be used to create a customized natsConnection.

◆ natsInbox

typedef char natsInbox

This can be used as the reply for a request. Inboxes are meant to be unique so that replies can be sent to a specific subscriber. That being said, inboxes can be shared across multiple subscribers if desired.

◆ natsClientConfig

◆ natsMsgList

typedef struct natsMsgList natsMsgList

Used by some APIs which return a list of natsMsg objects.

Those APIs will not create the object, but instead initialize the object to which a pointer to that object will be passed to it. Typically, the user will define the object on the stack and pass a pointer to this object to APIs that require a pointer to a natsMsgList object.

Similarly, calling natsMsgList_Destroy will call natsMsg_Destroy on any message still in the list, free the array containing pointers to the messages, but not free the natsMsgList object itself.

Note
If the user wants to keep some of the messages from the list, the pointers of those messages in the Msgs array should be set to NULL. The value Count MUST not be changed. The function natsMsgList_Destroy will iterate through all pointers in the list and only destroy the ones that have not been set to NULL.
See also
natsMsgList_Destroy

◆ natsMetadata

typedef struct natsMetadata natsMetadata

Used in JetStream, microservice configuration.

◆ jsCtx

typedef struct __jsCtx jsCtx

The JetStream context. Use for JetStream assets management and communication.

Warning
A context MUST not be destroyed concurrently with jsCtx API calls (for instance js_Publish or js_PublishAsync, etc...). However, it is safe to destroy the context while a jsPubAckErrHandler callback is running or while inside js_PublishAsyncComplete.

◆ jsPubOptions

typedef struct jsPubOptions jsPubOptions

JetStream publish options.

These are options that you can provide to JetStream publish APIs.

The common usage will be to initialize a structure on the stack by calling jsPubOptions_Init. Note that strings are owned by the application and need to be valid for the duration of the API call this object is passed to.

Note
It is the user responsibility to free the strings if they have been allocated.
See also
jsPubOptions_Init

◆ jsPlacement

typedef struct jsPlacement jsPlacement

Used to guide placement of streams in clustered JetStream.

Initialize the object with jsPlacement_Init.

Note
The strings are applications owned and will not be freed by the library.

See jsStreamConfig for information on how to configure a stream.

See also
jsPlacement_Init

◆ jsExternalStream

Allows you to qualify access to a stream source in another account.

Initialize the object with jsExternalStream_Init.

Note
The strings are applications owned and will not be freed by the library.

See jsStreamConfig for information on how to configure a stream.

◆ jsStreamSource

Dictates how streams can source from other streams.

Initialize the object with jsStreamSource_Init.

Note
The strings are applications owned and will not be freed by the library.
The OptStartTime needs to be expressed as the number of nanoseconds passed since 00:00:00 UTC Thursday, 1 January 1970.

See jsStreamConfig for information on how to configure a stream.

◆ jsRePublish

typedef struct jsRePublish jsRePublish

Allows a source subject to be mapped to a destination subject for republishing.

◆ jsSubjectTransformConfig

SubjectTransformConfig is for applying a subject transform (to matching messages) before doing anything else when a new message is received

◆ jsStreamConsumerLimits

SubjectTransformConfig is for applying a subject transform (to matching messages) before doing anything else when a new message is received

◆ jsStreamConfig

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);

◆ jsLostStreamData

Information about messages that have been lost

◆ jsStreamStateSubject

This indicate that the given Subject in a stream contains Msgs messages.

See also
jsStreamStateSubjects

◆ jsStreamStateSubjects

List of subjects optionally returned in the stream information request.

This structure indicates the number of elements in the list, that is, the list contains Count jsStreamStateSubject elements.

To get this list in jsStreamState, you have to ask for it through jsOptions.

jsStreamInfo *si = NULL;
jsOptions o;
jsOptions_Init(&o);
o.Stream.Info.SubjectsFilter = "foo.>";
s = js_GetStreamInfo(&si, js, "MY_STREAM", &o, &jerr);
// handle errors and assume si->State.Subjects is not NULL
for (i=0; i<si->State.Subjects->Count; i++)
{
jsStreamStateSubject *subj = &(si->State.Subjects->List[i]);
printf("Subject=%s Messages count=%d\n", subj->Subject, (int) subj->Msgs);
}
See also
jsStreamStateSubject
js_GetStreamInfo
jsOptions.Stream.Info.SubjectsFilter

◆ jsStreamState

typedef struct jsStreamState jsStreamState

Information about the given stream

Note
FirstTime and LastTime are message timestamps expressed as the number of nanoseconds passed since 00:00:00 UTC Thursday, 1 January 1970.

◆ jsPeerInfo

typedef struct jsPeerInfo jsPeerInfo

Information about all the peers in the cluster that are supporting the stream or consumer.

◆ jsClusterInfo

typedef struct jsClusterInfo jsClusterInfo

Information about the underlying set of servers that make up the stream or consumer.

◆ jsStreamSourceInfo

Information about an upstream stream source.

◆ jsStreamAlternate

Information about an alternate stream represented by a mirror.

◆ jsStreamInfo

typedef struct jsStreamInfo jsStreamInfo

Configuration and current state for this stream.

Note
Created is the timestamp when the stream was created, expressed as the number of nanoseconds passed since 00:00:00 UTC Thursday, 1 January 1970.

◆ jsStreamInfoList

List of stream information objects returned by js_Streams

Note
Once done, the list should be destroyed calling jsStreamInfoList_Destroy
See also
jsStreamInfoList_Destroy

◆ jsStreamNamesList

List of stream names returned by js_StreamNames

Note
Once done, the list should be destroyed calling jsStreamNamesList_Destroy
See also
jsStreamNamesList_Destroy

◆ jsConsumerConfig

Configuration of a JetStream consumer.

In order to add a consumer, 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_AddConsumer.

Note
OptStartTime needs to be expressed as the number of nanoseconds passed since 00:00:00 UTC Thursday, 1 January 1970.
The strings are applications owned and will not be freed by the library.
SampleFrequency is a sampling value, represented as a string such as "50" for 50%, that causes the server to produce advisories for consumer ack metrics.
Durable cannot contain the character ".".
HeadersOnly means that the subscription will not receive any message payload, instead, it will receive only messages headers (if present) with the addition of the header JSMsgSize ("Nats-Msg-Size"), whose value is the payload size.
NATS server 2.10 added FilterSubjects, an array of multiple filter subjects. It is mutually exclusive with the previously available single FilterSubject.
NATS server 2.10 added consumer Metadata which contains user-provided string name/value pairs.
See also
jsConsumerConfig_Init
jsConsumerInfo *ci = NULL;
jsConsumerConfig cc;
jsConsumerConfig_Init(&cc);
cc.Durable = "MY_DURABLE";
cc.DeliverSubject = "foo";
cc.DeliverPolicy = js_DeliverNew;
s = js_AddConsumer(&ci, js, &cc, NULL, &jerr);

◆ jsConsumerSequenceMismatch

This represents a consumer sequence mismatch between the server and client views.

This can help applications find out if messages have been missed. Without this and during a disconnect, it would be possible that a subscription is not aware that it missed messages from the server. When acknowledgment mode is other than js_AckNone, messages would ultimately be redelivered, but for js_AckNone, they would not. But even with an acknowledgment mode this may help finding sooner that something went wrong and let the application decide if it wants to recreate the subscription starting at a given sequence.

The gap of missing messages could be calculated as ConsumerServer-ConsumerClient.

See also
natsSubscription_GetSequenceMismatch

◆ jsSubOptions

typedef struct jsSubOptions jsSubOptions

JetStream subscribe options.

These are options that you can provide to JetStream subscribe APIs.

The common usage will be to initialize a structure on the stack by calling jsSubOptions_Init. Note that strings are owned by the application and need to be valid for the duration of the API call this object is passed to.

Note
It is the user responsibility to free the strings if they have been allocated.
See also
jsSubOptions_Init

◆ jsSequencePair

Includes the consumer and stream sequence info from a JetStream consumer.

◆ jsSequenceInfo

Has both the consumer and the stream sequence and last activity.

◆ jsConsumerInfo

Configuration and current state for this consumer.

Note
Created is the timestamp when the consumer was created, expressed as the number of nanoseconds passed since 00:00:00 UTC Thursday, 1 January 1970.

◆ jsConsumerInfoList

List of consumers information objects returned by js_Consumers

Note
Once done, the list should be destroyed calling jsConsumerInfoList_Destroy
See also
jsStreamInfoList_Destroy

◆ jsConsumerNamesList

List of consumer names returned by js_ConsumerNames

Note
Once done, the list should be destroyed calling jsConsumerNamesList_Destroy
See also
jsConsumerNamesList_Destroy

◆ jsConsumerPauseResponse

Request to pause the consumer, used to call js_PauseConsumer.

See also
js_PauseConsumer

◆ jsAPIStats

typedef struct jsAPIStats jsAPIStats

Reports on API calls to JetStream for this account.

◆ jsAccountLimits

Includes the JetStream limits of the current account.

◆ jsTier

typedef struct jsTier jsTier

◆ jsAccountInfo

typedef struct jsAccountInfo jsAccountInfo

Information about the JetStream usage from the current account.

◆ jsMsgMetaData

typedef struct jsMsgMetaData jsMsgMetaData

This represents the JetStream metadata associated with received messages.

See also
natsMsg_GetMetaData
jsMsgMetaData_Destroy

◆ jsPubAck

typedef struct jsPubAck jsPubAck

Ack received after successfully publishing a message.

◆ jsPubAckErr

typedef struct jsPubAckErr jsPubAckErr

Publish acknowledgment failure that will be passed to the optional jsPubAckErrHandler callback.

◆ jsDirectGetMsgOptions

Options for the js_DirectGetMsg() call, which retrieves a message from any server (not only the leader) as long as the stream has been created with a AllowDirect option.

Note that some options are mutually exclusive but are not checked byt the library. The server will reject invalid requests and the library will return the error returned from the server.

◆ jsFetchRequest

Options for the natsSubscription_FetchRequest() call, which is similar to natsSubscription_Fetch() but gives more control in the configuration of the fetch.

◆ jsFetchCompleteHandler

typedef void(* jsFetchCompleteHandler) (natsConnection *nc, natsSubscription *sub, natsStatus s, void *closure)
Parameters
nc- Connection to the NATS server
sub- Subscription being used
s- Completion status code
  • NATS_OK - should never happen here!
  • NATS_TIMEOUT indicates that the fetch has reached its lifetime expiration time, or had NoWait set and there are no more messages.
  • NATS_NOT_FOUND is returned when the server has no messages to deliver at the beginning of a specific request. It may be returned for NoWait subscriptions, effectively the same meaning as NATS_TIMEOUT - early termination for NoWait.
  • NATS_MAX_DELIVERED_MSGS indicates that lifetime Batch message limit has been reached.
  • NATS_LIMIT_REACHED is returned when the lifetime byte limit is reached.
  • Other status values represent error conditions.
closurecompleteClosure that was passed to js_PullSubscribeAsync
See also
js_PullSubscribeAsync

◆ jsFetchNextHandler

typedef bool(* jsFetchNextHandler) (int *messages, int64_t *maxBytes, natsSubscription *sub, void *closure)

The library will invoke this callback when it may be time to request more messages from the server.

Returns
true to fetch more, false to skip. If true, messages and maxBytes should be set to the number of messages and max bytes to fetch.
See also
js_PullSubscribeAsync

◆ jsOptions

typedef struct jsOptions jsOptions

JetStream context options.

Initialize the object with jsOptions_Init.

◆ kvStore

typedef struct __kvStore kvStore

The KeyValue store object.

◆ kvEntry

typedef struct __kvEntry kvEntry

The KeyValue entry object.

◆ kvStatus

typedef struct __kvStatus kvStatus

The KeyValue status object.

◆ kvWatcher

typedef struct __kvWatcher kvWatcher

The KeyValue watcher object.

◆ kvConfig

typedef struct kvConfig kvConfig

KeyValue configuration object.

Initialize the object with kvConfig_Init.

◆ kvWatchOptions

KeyValue watcher options object.

Initialize the object with kvWatchOptions_Init

◆ kvPurgeOptions

KeyValue purge options object.

Initialize the object with kvPurgeOptions_Init

◆ kvEntryList

typedef struct kvEntryList kvEntryList

Used by some APIs which return a list of kvEntry objects.

Those APIs will not create the object, but instead initialize the object.

Typically, the user will define the object on the stack and pass a pointer to this object to APIs that require a pointer to a kvEntryList object.

Similarly, calling kvEntryList_Destroy will call kvEntry_Destroy on entries in the list, free the array containing pointers to the entries, but not free the kvEntryList object itself.

See also
kvEntryList_Destroy

◆ kvKeysList

typedef struct kvKeysList kvKeysList

Used by some APIs which return a list of key names.

Those APIs will not create the object, but instead initialize the object.

Typically, the user will define the object on the stack and pass a pointer to this object to APIs that require a pointer to a kvKeysList object.

Similarly, calling kvKeysList_Destroy will free key strings in the list, free the array containing pointers to the keys, but not free the kvKeysList object itself.

See also
kvKeysList_Cleanup

◆ stanConnection

typedef struct __stanConnection stanConnection

A stanConnection represents a connection to a NATS Streaming Server.

◆ stanSubscription

typedef struct __stanSubscription stanSubscription

A stanSubscription represents interest in a given channel.

◆ stanMsg

typedef struct __stanMsg stanMsg

stanMsg is the object passed to the subscriptions' message callbacks.

◆ stanConnOptions

typedef struct __stanConnOptions stanConnOptions

Options can be used to create a customized stanConnection.

◆ stanSubOptions

typedef struct __stanSubOptions stanSubOptions

Options can be used to create a customized stanSubscription.

Enumeration Type Documentation

◆ jsRetentionPolicy

Determines how messages in a set are retained.

Enumerator
js_LimitsPolicy 

Specifies that messages are retained until any given limit is reached, which could be one of MaxMsgs, MaxBytes, or MaxAge. This is the default.

js_InterestPolicy 

Specifies that when all known observables have acknowledged a message it can be removed.

js_WorkQueuePolicy 

Specifies that when the first worker or subscriber acknowledges the message it can be removed.

◆ jsDiscardPolicy

Determines how to proceed when limits of messages or bytes are reached.

Enumerator
js_DiscardOld 

Will remove older messages to return to the limits. This is the default.

js_DiscardNew 

Will fail to store new messages.

◆ jsStorageType

Determines how messages are stored for retention.

Enumerator
js_FileStorage 

Specifies on disk storage. It's the default.

js_MemoryStorage 

Specifies in memory only.

◆ jsStorageCompression

Determines how messages are compressed when stored for retention.

Enumerator
js_StorageCompressionNone 

Specifies no compression. It's the default.

js_StorageCompressionS2 

Specifies S2.

◆ jsDeliverPolicy

Determines how the consumer should select the first message to deliver.

Enumerator
js_DeliverAll 

Starts from the very beginning of a stream. This is the default.

js_DeliverLast 

Starts with the last sequence received.

js_DeliverNew 

Starts with messages sent after the consumer is created.

js_DeliverByStartSequence 

Starts from a given sequence.

js_DeliverByStartTime 

Starts from a given UTC time (number of nanoseconds since epoch)

js_DeliverLastPerSubject 

Starts with the last message for all subjects received.

◆ jsAckPolicy

Determines how the consumer should acknowledge delivered messages.

Enumerator
js_AckExplicit 

Requires ack or nack for all messages.

js_AckNone 

Requires no acks for delivered messages.

js_AckAll 

When acking a sequence number, this implicitly acks all sequences below this one as well.

◆ jsReplayPolicy

Determines how the consumer should replay messages it already has queued in the stream.

Enumerator
js_ReplayInstant 

Replays messages as fast as possible.

js_ReplayOriginal 

Maintains the same timing as the messages were received.

◆ kvOperation

Determines the type of operation of a kvEntry

Enumerator
kvOp_Unknown 
kvOp_Put 
kvOp_Delete 
kvOp_Purge