Skip to content

StreamConfig

nats.js.api.StreamConfig dataclass #

StreamConfig(
    name: Optional[str] = None,
    description: Optional[str] = None,
    subjects: Optional[List[str]] = None,
    retention: Optional[RetentionPolicy] = None,
    max_consumers: Optional[int] = None,
    max_msgs: Optional[int] = None,
    max_bytes: Optional[int] = None,
    discard: Optional[DiscardPolicy] = OLD,
    discard_new_per_subject: bool = False,
    max_age: Optional[float] = None,
    max_msgs_per_subject: int = -1,
    max_msg_size: Optional[int] = -1,
    storage: Optional[StorageType] = None,
    num_replicas: Optional[int] = None,
    no_ack: bool = False,
    template_owner: Optional[str] = None,
    duplicate_window: float = 0,
    placement: Optional[Placement] = None,
    mirror: Optional[StreamSource] = None,
    sources: Optional[List[StreamSource]] = None,
    sealed: bool = False,
    deny_delete: bool = False,
    deny_purge: bool = False,
    allow_rollup_hdrs: bool = False,
    republish: Optional[RePublish] = None,
    subject_transform: Optional[SubjectTransform] = None,
    allow_direct: Optional[bool] = None,
    mirror_direct: Optional[bool] = None,
    compression: Optional[StoreCompression] = None,
    allow_msg_ttl: Optional[bool] = None,
    allow_msg_schedules: Optional[bool] = None,
    allow_atomic: Optional[bool] = None,
    allow_batched: Optional[bool] = None,
    metadata: Optional[Dict[str, str]] = None,
)

Bases: Base

StreamConfig represents the configuration of a stream.

name class-attribute instance-attribute #

name: Optional[str] = None

description class-attribute instance-attribute #

description: Optional[str] = None

subjects class-attribute instance-attribute #

subjects: Optional[List[str]] = None

retention class-attribute instance-attribute #

retention: Optional[RetentionPolicy] = None

max_consumers class-attribute instance-attribute #

max_consumers: Optional[int] = None

max_msgs class-attribute instance-attribute #

max_msgs: Optional[int] = None

max_bytes class-attribute instance-attribute #

max_bytes: Optional[int] = None

discard class-attribute instance-attribute #

discard_new_per_subject class-attribute instance-attribute #

discard_new_per_subject: bool = False

max_age class-attribute instance-attribute #

max_age: Optional[float] = None

max_msgs_per_subject class-attribute instance-attribute #

max_msgs_per_subject: int = -1

max_msg_size class-attribute instance-attribute #

max_msg_size: Optional[int] = -1

storage class-attribute instance-attribute #

storage: Optional[StorageType] = None

num_replicas class-attribute instance-attribute #

num_replicas: Optional[int] = None

no_ack class-attribute instance-attribute #

no_ack: bool = False

template_owner class-attribute instance-attribute #

template_owner: Optional[str] = None

duplicate_window class-attribute instance-attribute #

duplicate_window: float = 0

placement class-attribute instance-attribute #

placement: Optional[Placement] = None

mirror class-attribute instance-attribute #

mirror: Optional[StreamSource] = None

sources class-attribute instance-attribute #

sources: Optional[List[StreamSource]] = None

sealed class-attribute instance-attribute #

sealed: bool = False

deny_delete class-attribute instance-attribute #

deny_delete: bool = False

deny_purge class-attribute instance-attribute #

deny_purge: bool = False

allow_rollup_hdrs class-attribute instance-attribute #

allow_rollup_hdrs: bool = False

republish class-attribute instance-attribute #

republish: Optional[RePublish] = None

subject_transform class-attribute instance-attribute #

subject_transform: Optional[SubjectTransform] = None

allow_direct class-attribute instance-attribute #

allow_direct: Optional[bool] = None

mirror_direct class-attribute instance-attribute #

mirror_direct: Optional[bool] = None

compression class-attribute instance-attribute #

compression: Optional[StoreCompression] = None

allow_msg_ttl class-attribute instance-attribute #

allow_msg_ttl: Optional[bool] = None

allow_atomic class-attribute instance-attribute #

allow_atomic: Optional[bool] = None

allow_batched class-attribute instance-attribute #

allow_batched: Optional[bool] = None

allow_msg_schedules class-attribute instance-attribute #

allow_msg_schedules: Optional[bool] = None

metadata class-attribute instance-attribute #

metadata: Optional[Dict[str, str]] = None

from_response classmethod #

from_response(resp: Dict[str, Any])
Source code in nats/js/api.py
@classmethod
def from_response(cls, resp: Dict[str, Any]):
    cls._convert_nanoseconds(resp, "max_age")
    cls._convert_nanoseconds(resp, "duplicate_window")
    cls._convert(resp, "placement", Placement)
    cls._convert(resp, "mirror", StreamSource)
    cls._convert(resp, "sources", StreamSource)
    cls._convert(resp, "republish", RePublish)
    cls._convert(resp, "subject_transform", SubjectTransform)
    return super().from_response(resp)

as_dict #

as_dict() -> Dict[str, object]
Source code in nats/js/api.py
def as_dict(self) -> Dict[str, object]:
    result = super().as_dict()
    result["duplicate_window"] = self._to_nanoseconds(
        self.duplicate_window
    )
    result["max_age"] = self._to_nanoseconds(self.max_age)
    if self.sources:
        result["sources"] = [src.as_dict() for src in self.sources]
    if self.compression and (self.compression != StoreCompression.NONE
                             and self.compression != StoreCompression.S2):
        raise ValueError(
            "nats: invalid store compression type: %s" % self.compression
        )
    if self.metadata and not isinstance(self.metadata, dict):
        raise ValueError("nats: invalid metadata format")
    return result

evolve #

evolve(**params) -> _B

Return a copy of the instance with the passed values replaced.

Source code in nats/js/api.py
def evolve(self: _B, **params) -> _B:
    """Return a copy of the instance with the passed values replaced."""
    return replace(self, **params)