The following limitations apply to Atlas Stream Processing:
General
Atlas Stream Processing supports only at-least-once processing.
Atlas Stream Processing doesn't support horizontal scaling.
Atlas Stream Processing uses a single core for transformation pipeline stages, except for stages that can specify a
parallelismvalue.The
state.stateSizeof a stream processor can't exceed 80% of the RAM available for its pod. For example, the maximum size of a stream processor in theSP30tier, which has 8GB of RAM, is 6.4GB. If thestate.stateSizeof any of your stream processors is approaching 80% of its available RAM, consider stopping the processor and restarting it on a higher tier. If your stream processor already runs at the maximum tier enabled for your stream processing workspace, consider adjusting your stream processing workspace configuration to enable higher-tier stream processors.When a stream processor crosses the 80% RAM threshold, it fails with a
Worker out of memoryerror. You can view thestate.stateSizevalue of each stream processor with thesp.processor.stats()command. See View Statistics of a Stream Processor to learn more.An Atlas Stream Processing pipeline definition cannot exceed 16 MB.
Only users with the
Organization Stream Processing Admin,Project Owner,Project Stream Processing OwnerorAtlas adminroles can use Atlas Stream Processing.You must use
mongoshversion 2.3.4 or later to override an option on an existing stream processor using amongoshmethod. For example, usingsp.processor.start()to specify a tier for the processor you are starting.See Develop Stream Processors to learn more about managing a stream processor using
mongosh.
Aggregation Pipeline
Atlas Stream Processing supports a subset of the Aggregation Pipeline Stages available in Atlas, allowing you to perform many of the same operations on streaming data that you can perform on data-at-rest. For a full list of supported Aggregation Pipeline Stages, see the Stream Aggregation documentation.
Atlas Stream Processing doesn't support the aggregation variables
$$NOW,$$CLUSTER_TIME,$$USER_ROLES, and$SEARCH_META.Atlas Stream Processing doesn't support writing BSON documents larger than
125 MBusing the $emit stage to an AWS S3 bucket.
Kafka Connections
For Apache Kafka $source stages, if the Apache Kafka topic acting as $source to the running processor adds a partition, the starting offset is determined by the auto_offset_reset property.
For Apache Kafka $source stages are subject to stream processing workspace tier partition limits. If you exceed the partition limit of your stream processing workspace tier, the affected stream processor will fail. You must upgrade your stream processing workspace to support additional partitions.
Atlas Stream Processing doesn't support connecting to an Apache Kafka consumer in the same consumer group as other consumers. Ensure any Kafka consumer used with Atlas Stream Processing runs in a dedicated consumer group.
For Apache Kafka connections, Atlas Stream Processing currently supports only the following security protocols:
SASL_PLAINTEXTSASL_SSLSSL
For
SASL, Atlas Stream Processing supports the following mechanisms:PLAINSCRAM-SHA-256SCRAM-SHA-512OAUTHBEARER
For
SSL, you must provide the following assets for your Apache Kafka system mutual TLS authentication with Atlas Stream Processing:a Certificate Authority (if you are using one other than the default Apache Kafka CA)
a client TLS certificate
a TLS keyfile, used to sign your TLS certificate
Initial Sync
initialSync supports collections whose
_idvalues are of any type except array, regular expression, or JavaScript code, which MongoDB doesn't support as_idvalues. All_idvalues in a collection must be of the same type. Atlas Stream Processing doesn't supportinitialSyncon collections that contain mixed_idtypes.If your collection's
_idvalues are default generated ObjectId values or orderedintorlongvalues,initialSyncachieves optimal performance. For other_idtypes,initialSyncmight take longer to complete because the values aren't stored in a predictable order. Increase your oplog size before you begin a longerinitialSyncoperation so that the processor's resume token remains on the oplog. If the resume token is no longer on the oplog wheninitialSynccompletes, the processor enters a failed state to prevent data loss, andinitialSyncruns again.Atlas Stream Processing can insert new documents into a partition while
initialSynccopies it. A network failure that interrupts a query on a growing partition can prolong the collection-copy phase.initialSyncmight insert duplicate documents if it reads a change event during the collection-copy or catch-up phase. Atlas Stream Processing's at-least-once processing guarantee covers this behavior.
Failover Processors
Atlas Stream Processing supports failover processors only for processors with the following configurations:
Atlas source and sink
Atlas source and Apache Kafka sink
Atlas Stream Processing supports failover processors only for processors of tier
SP10or higher.For processors configured with failover processors, only one processor can be active at any given time. You can edit only the active processor.