{
  "schema_version": 2,
  "id": "integrate/redis-data-integration/reference/config-yaml-reference",
  "title": "Redis Data Integration configuration file",
  "url": "https://redis.io/docs/latest/integrate/redis-data-integration/reference/config-yaml-reference/",
  "summary": "Redis Data Integration configuration file reference",
  "aliases": [
    "/integrate/redis-data-integration/ingest/reference/config-yaml-reference/"
  ],
  "tags": [
    "redis-di"
  ],
  "last_updated": "2026-10-09T12:52:02+03:00",
  "page_type": "content",
  "content_hash": "1bdad068ae1eefb24121a72fef1babc78aa371c2a727187827955a95f0a60048",
  "sections": [
    {
      "id": "overview",
      "title": "Overview",
      "role": "overview",
      "text": "Configuration file for Redis Data Integration (RDI) source collectors and target connections.\n\n\n**Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|[**sources**](#sources)<br/>(Source collectors)|`object`|Source collectors that capture changes from upstream databases. Each key is a unique source identifier; the value configures one collector.<br/>||\n|[**targets**](#targets)<br/>(Target connections)|`object`|Target Redis databases where processed records are written. Each key is a target identifier; the value configures the connection.<br/>||\n|[**processors**](#processors)<br/>(Data processing configuration)|`object`, `null`|Settings that control how data is processed, including batch sizes, error handling, and performance tuning.<br/>||\n|[**secret\\-providers**](#secret-providers)<br/>(Secret providers)|`object`|External secret providers used to resolve `${...}` references in the configuration.<br/>||\n|[**metadata**](#metadata)<br/>(Pipeline metadata)|`object`|Optional metadata describing this pipeline, such as a display name and description.<br/>||\n\n**Additional Properties:** not allowed  \n<a name=\"sources\"></a>"
    },
    {
      "id": "sources-source-collectors",
      "title": "sources: Source collectors",
      "role": "content",
      "text": "Source collectors that capture changes from upstream databases. Each key is a unique source identifier; the value configures one collector.\n\n\n**Properties** (key: `.*`)\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|[**connection**](#sourcesconnection)<br/>(Source database connection)|`object`|Connection configuration for a non-Redis source database. The exact set of properties depends on the database type.<br/>|no|\n|**name**<br/>(Source name)|`string`|Human-readable name for the source collector. Maximum 100 characters.<br/>Maximal Length: `100`<br/>|no|\n|**type**<br/>(Collector type)|`string`|Type of the source collector. Use `cdc` (default) for change data capture using [Debezium](https://debezium.io/). Use `flink` for Spanner change streams using the Apache Flink-based collector. Use `riotx` for Snowflake CDC using [RIOT-X](https://redis.github.io/riotx/).<br/>Default: `\"cdc\"`<br/>Enum: `\"cdc\"`, `\"flink\"`, `\"riotx\"`<br/>|yes|\n|**active**<br/>(Collector enabled)|`boolean`|When `true`, the collector runs; when `false`, the collector is disabled and produces no events.<br/>Default: `true`<br/>|no|\n|[**logging**](#sourceslogging)<br/>(Logging configuration)|`object`|Logging settings for this source collector.<br/>|no|\n|[**tables**](#sourcestables)<br/>(Tables to capture)|`object`|Tables to capture from the source database, keyed by table name. The value configures column selection and key handling for that table.<br/>|no|\n|[**schemas**](#sourcesschemas)<br/>(Schema names)|`string[]`|Schema names to capture from the source database. Maps to the underlying connector's `schema.include.list`.<br/>|no|\n|[**databases**](#sourcesdatabases)<br/>(Database names)|`string[]`|Database names to capture from the source database. Maps to the underlying connector's `database.include.list`. Applies only to MySQL, MariaDB, and MongoDB connections.<br/>|no|\n|[**advanced**](#sourcesadvanced)<br/>(Advanced configuration)|`object`|Advanced configuration that overrides the underlying engine's defaults. Only required for non-standard tuning.<br/>|no|\n\n\n**Property Name Pattern:** `^[a-z]([a-z0-9-]*[a-z0-9])?$`  \n<a name=\"sourcesconnection\"></a>"
    },
    {
      "id": "sourcesconnection-source-database-connection",
      "title": "sources\\.connection: Source database connection",
      "role": "content",
      "text": "Connection configuration for a non-Redis source database. The exact set of properties depends on the database type.\n\n\n**Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|[**SQL database**](#sourcesconnectionsqldatabase)<br/>(SQL database)|`object`|Connection configuration for a supported SQL database.<br/>||\n|[**MongoDB**](#sourcesconnectionmongodb)|`object`|Connection configuration for a MongoDB database.<br/>|yes|\n|[**Spanner**](#sourcesconnectionspanner)|`object`|Connection configuration for a Google Cloud Spanner database.<br/>|yes|\n|[**Snowflake**](#sourcesconnectionsnowflake)|`object`|Connection configuration for a Snowflake database.<br/>|yes|\n\n**Example**\n\n[code example]\n\n<a name=\"sourcesconnectionsqldatabase\"></a>\n#### sources\\.connection\\.SQL database: SQL database\n\nConnection configuration for a supported SQL database.\n\n\n**Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|**type**<br/>(Database type)|`string`|SQL database engine.<br/>Enum: `\"mariadb\"`, `\"mysql\"`, `\"oracle\"`, `\"postgresql\"`, `\"sqlserver\"`<br/>||\n|**host**<br/>(Database host)|`string`|Hostname or IP address of the SQL database server.<br/>||\n|**port**<br/>(Database port)|`integer`|Network port on which the SQL database server is listening.<br/>Minimum: `1`<br/>Maximum: `65535`<br/>||\n|**database**<br/>(Database name)|`string`|Name of the database to connect to.<br/>Minimal Length: `1`<br/>||\n|**user**<br/>(Database user)|`string`|Username for authentication to the SQL database.<br/>||\n|**password**<br/>(Database password)|`string`|Password for authentication to the SQL database.<br/>||\n\n**Additional Properties:** not allowed  \n**Example**\n\n[code example]\n\n**Example**\n\n[code example]\n\n<a name=\"sourcesconnectionmongodb\"></a>\n#### sources\\.connection\\.MongoDB: MongoDB\n\nConnection configuration for a MongoDB database.\n\n\n**Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|**type**<br/>(Database type)|`string`|Database type identifier. Always `mongodb` for this connection.<br/>Constant Value: `\"mongodb\"`<br/>|yes|\n|**connection\\_string**|`string`|MongoDB connection URI including host, port, and any connection options.<br/>|yes|\n|**user**<br/>(MongoDB user)|`string`|Username for authentication to MongoDB.<br/>|no|\n|**password**<br/>(MongoDB password)|`string`|Password for authentication to MongoDB.<br/>|no|\n|**database**<br/>(MongoDB databases)|`string`|Comma-separated list of MongoDB databases to monitor.<br/>|no|\n\n**Additional Properties:** not allowed  \n**Example**\n\n[code example]\n\n<a name=\"sourcesconnectionspanner\"></a>\n#### sources\\.connection\\.Spanner: Spanner\n\nConnection configuration for a Google Cloud Spanner database.\n\n\n**Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|**type**<br/>(Database type)|`string`|Database type identifier. Always `spanner` for this connection.<br/>Constant Value: `\"spanner\"`<br/>|yes|\n|**project\\_id**<br/>(Spanner project ID)|`string`|Google Cloud project ID that hosts the Spanner instance.<br/>|yes|\n|**instance\\_id**<br/>(Spanner instance ID)|`string`|Spanner instance identifier within the project.<br/>|yes|\n|**database\\_id**<br/>(Spanner database ID)|`string`|Spanner database identifier within the instance.<br/>|yes|\n|**emulator\\_host**<br/>(Spanner emulator host)|`string`|Host and port of the Spanner emulator. Used for local development; leave unset against real Spanner.<br/>|no|\n|**use\\_credentials\\_file**|`boolean`|When `true`, RDI authenticates using a service account credentials file; when `false`, it uses application default credentials.<br/>Default: `false`<br/>|no|\n|[**change\\_streams**](#sourcesconnectionspannerchange_streams)<br/>(Change streams configuration)|`object`|Spanner change streams to capture, keyed by change stream name.<br/>|yes|\n\n**Additional Properties:** not allowed  \n**Example**\n\n[code example]\n\n<a name=\"sourcesconnectionspannerchange_streams\"></a>\n##### sources\\.connection\\.Spanner\\.change\\_streams: Change streams configuration\n\nSpanner change streams to capture, keyed by change stream name.\n\n\n**Additional Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|[**Additional Properties**](#sourcesconnectionspannerchange_streamsadditionalproperties)|`object`, `null`|||\n\n**Minimal Properties:** 1  \n<a name=\"sourcesconnectionspannerchange_streamsadditionalproperties\"></a>\n###### sources\\.connection\\.Spanner\\.change\\_streams\\.additionalProperties: object,null\n\n**Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|**retention\\_period\\_hours**<br/>(Change stream retention period hours)|`integer`, `string`|Retention period for the change stream, in hours.<br/>Pattern: `^\\${.*}$`<br/>Minimum: `1`<br/>||\n\n**Additional Properties:** not allowed  \n<a name=\"sourcesconnectionsnowflake\"></a>\n#### sources\\.connection\\.Snowflake: Snowflake\n\nConnection configuration for a Snowflake database.\n\n\n**Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|**type**<br/>(Database type)|`string`|Database type identifier. Always `snowflake` for this connection.<br/>Constant Value: `\"snowflake\"`<br/>|yes|\n|**url**<br/>(JDBC URL)|`string`|Snowflake JDBC connection URL, for example `jdbc:snowflake://account.snowflakecomputing.com/`.<br/>|yes|\n|**user**<br/>(Snowflake user)|`string`|Username for authentication to Snowflake.<br/>|yes|\n|**password**<br/>(Snowflake password)|`string`|Password for authentication to Snowflake. For key-pair authentication, omit this field and provide the private key via the `<source>-db-ssl` secret (`client.key` field).<br/>|no|\n|**database**<br/>(Snowflake database)|`string`|Name of the Snowflake database to connect to.<br/>|yes|\n|**warehouse**<br/>(Snowflake warehouse)|`string`|Name of the Snowflake warehouse used for compute.<br/>|yes|\n|**role**<br/>(Snowflake role)|`string`|Snowflake role used for the connection.<br/>|no|\n|**cdcDatabase**<br/>(CDC database)|`string`|Database hosting the CDC streams. Defaults to the main `database` if not set.<br/>|no|\n|**cdcSchema**<br/>(CDC schema)|`string`|Schema hosting the CDC streams. Defaults to the main schema if not set.<br/>|no|\n\n**Additional Properties:** not allowed  \n**Example**\n\n[code example]\n\n<a name=\"sourceslogging\"></a>"
    },
    {
      "id": "sourceslogging-logging-configuration",
      "title": "sources\\.logging: Logging configuration",
      "role": "content",
      "text": "Logging settings for this source collector.\n\n\n**Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|**level**<br/>(Logging level)|`string`|Log verbosity for the source collector.<br/>Default: `\"info\"`<br/>Enum: `\"trace\"`, `\"debug\"`, `\"info\"`, `\"warn\"`, `\"error\"`<br/>||\n\n**Additional Properties:** not allowed  \n**Example**\n\n[code example]\n\n<a name=\"sourcestables\"></a>"
    },
    {
      "id": "sourcestables-tables-to-capture",
      "title": "sources\\.tables: Tables to capture",
      "role": "content",
      "text": "Tables to capture from the source database, keyed by table name. The value configures column selection and key handling for that table.\n\n\n**Additional Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|[**Additional Properties**](#sourcestablesadditionalproperties)|`object`, `null`|||\n\n**Minimal Properties:** 1  \n<a name=\"sourcestablesadditionalproperties\"></a>\n#### sources\\.tables\\.additionalProperties: object,null\n\n**Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|**snapshot\\_sql**|`string`|Custom SQL statement used during the initial snapshot, giving fine-grained control over the data captured.<br/>||\n|[**columns**](#sourcestablesadditionalpropertiescolumns)<br/>(Columns to capture)|`string[]`|List of specific columns to capture for changes. If not specified, all columns will be captured. For RIOTX Snowflake sources, this is rendered as per-table `--table-columns` projection. Note: This property cannot be used for MongoDB connections<br/>||\n|[**exclude\\_columns**](#sourcestablesadditionalpropertiesexclude_columns)<br/>(Columns to exclude)|`string[]`|Specific columns to exclude from capture. When omitted, no columns are excluded. Only supported for MongoDB connections.<br/>||\n|[**keys**](#sourcestablesadditionalpropertieskeys)<br/>(Message keys)|`string[]`|Optional list of columns to use as a composite unique identifier. For RIOTX Snowflake sources, this is rendered as per-table `--table-keys`. Only required when the table lacks a primary key or unique constraint. Must form a unique combination of fields<br/>||\n\n**Additional Properties:** not allowed  \n<a name=\"sourcestablesadditionalpropertiescolumns\"></a>\n##### sources\\.tables\\.additionalProperties\\.columns\\[\\]: Columns to capture\n\nList of specific columns to capture for changes. If not specified, all columns will be captured. For RIOTX Snowflake sources, this is rendered as per-table `--table-columns` projection. Note: This property cannot be used for MongoDB connections\n\n\n<a name=\"sourcestablesadditionalpropertiesexclude_columns\"></a>\n##### sources\\.tables\\.additionalProperties\\.exclude\\_columns\\[\\]: Columns to exclude\n\nSpecific columns to exclude from capture. When omitted, no columns are excluded. Only supported for MongoDB connections.\n\n\n<a name=\"sourcestablesadditionalpropertieskeys\"></a>\n##### sources\\.tables\\.additionalProperties\\.keys\\[\\]: Message keys\n\nOptional list of columns to use as a composite unique identifier. For RIOTX Snowflake sources, this is rendered as per-table `--table-keys`. Only required when the table lacks a primary key or unique constraint. Must form a unique combination of fields\n\n\n<a name=\"sourcesschemas\"></a>"
    },
    {
      "id": "sourcesschemas-schema-names",
      "title": "sources\\.schemas\\[\\]: Schema names",
      "role": "content",
      "text": "Schema names to capture from the source database. Maps to the underlying connector's `schema.include.list`.\n\n\n<a name=\"sourcesdatabases\"></a>"
    },
    {
      "id": "sourcesdatabases-database-names",
      "title": "sources\\.databases\\[\\]: Database names",
      "role": "content",
      "text": "Database names to capture from the source database. Maps to the underlying connector's `database.include.list`. Applies only to MySQL, MariaDB, and MongoDB connections.\n\n\n<a name=\"sourcesadvanced\"></a>"
    },
    {
      "id": "sourcesadvanced-advanced-configuration",
      "title": "sources\\.advanced: Advanced configuration",
      "role": "content",
      "text": "Advanced configuration that overrides the underlying engine's defaults. Only required for non-standard tuning.\n\n\n**Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|[**sink**](#sourcesadvancedsink)<br/>(RDI Collector stream writer configuration)|`object`|Advanced configuration properties for the RDI Collector stream writer connection and behaviour. **Applies to the `cdc` and `flink` collector types.**<br/>||\n|[**source**](#sourcesadvancedsource)<br/>(Advanced source settings)|`object`|Advanced configuration properties for the source database connection and CDC behavior. **Applies to the `cdc` and `flink` collector types.**<br/>||\n|[**quarkus**](#sourcesadvancedquarkus)<br/>(Quarkus runtime settings)|`object`|Advanced configuration properties for the Quarkus runtime that hosts Debezium Server. **Only applies to the `cdc` collector type.** See the [Debezium Server documentation](https://debezium.io/documentation/reference/stable/operations/debezium-server.html) for runtime configuration options. When using a property from that page, omit the `quarkus.` prefix.<br/>||\n|[**flink**](#sourcesadvancedflink)<br/>(Advanced Flink settings)|`object`|Advanced configuration properties forwarded to the Flink runtime that hosts the collector. Any property listed in the [Flink configuration documentation](https://nightlies.apache.org/flink/flink-docs-release-2.0/docs/deployment/config/) can be set here and will override the RDI default. **Only applies to the `flink` collector type.**<br/>||\n|[**resources**](#sourcesadvancedresources)<br/>(Collector resource settings)|`object`|Compute resources allocated to the collector. **Only applies to the `cdc` collector type.**<br/>||\n|[**riotx**](#sourcesadvancedriotx)<br/>(Advanced RIOT\\-X settings)|`object`|Advanced configuration properties for the RIOT-X Snowflake collector. **Only applies to the `riotx` collector type.**<br/>||\n|**java\\_options**<br/>(Advanced Java options)|`string`|These Java options will be passed to the command line command when launching the source collector. **Only applies to the `cdc` collector type.**<br/>||\n|[**diagnostics**](#sourcesadvanceddiagnostics)<br/>(Collector diagnostics)|`object`|Opt-in JVM diagnostics for the source collector. Each artifact is written to the `/opt/rdi/diagnostics` directory on the host and included in the `dump-support-package` bundle. **Only applies to the `cdc` collector type on VM installations, and is ignored otherwise.**<br/>||\n\n**Additional Properties:** not allowed  \n**Minimal Properties:** 1  \n**Example**\n\n[code example]\n\n<a name=\"sourcesadvancedsink\"></a>\n#### sources\\.advanced\\.sink: RDI Collector stream writer configuration\n\nAdvanced configuration properties for the RDI Collector stream writer connection and behaviour. **Applies to the `cdc` and `flink` collector types.**<br/><br/>For the `cdc` collector type, see the full list of properties at [Debezium Server — Redis Stream sink](https://debezium.io/documentation/reference/stable/operations/debezium-server.html#_redis_stream). When using a property from that page, omit the `debezium.sink.` prefix.<br/><br/>**The properties listed below only apply to the `flink` collector type.**\n\n\n**Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|**redis\\.batch\\.size**<br/>(Sink batch size)|`integer`|Maximum number of records the collector sink writes to Redis in a single batch.<br/>Default: `1000`<br/>Minimum: `1`<br/>||\n|**redis\\.flush\\.interval\\.ms**<br/>(Sink flush interval)|`integer`|Maximum time in milliseconds the collector sink waits to fill a batch before flushing it to Redis.<br/>Default: `100`<br/>Minimum: `1`<br/>||\n|**redis\\.connection\\.timeout\\.ms**<br/>(Sink connection timeout)|`integer`|Connection timeout in milliseconds for the target Redis client used by the collector sink.<br/>Default: `2000`<br/>Minimum: `1`<br/>||\n|**redis\\.socket\\.timeout\\.ms**<br/>(Sink socket timeout)|`integer`|Socket read/write timeout in milliseconds for the target Redis client used by the collector sink.<br/>Default: `2000`<br/>Minimum: `1`<br/>||\n|**redis\\.retry\\.max\\.attempts**<br/>(Sink retry max attempts)|`integer`|Maximum number of retry attempts for failed Redis operations.<br/>Default: `5`<br/>Minimum: `1`<br/>||\n|**redis\\.retry\\.initial\\.delay\\.ms**<br/>(Sink retry initial delay)|`integer`|Initial delay in milliseconds before the first retry of a failed Redis operation.<br/>Default: `100`<br/>Minimum: `1`<br/>||\n|**redis\\.retry\\.max\\.delay\\.ms**<br/>(Sink retry max delay)|`integer`|Maximum delay in milliseconds between retry attempts for failed Redis operations.<br/>Default: `3000`<br/>Minimum: `1`<br/>||\n|**redis\\.retry\\.backoff\\.multiplier**<br/>(Sink retry backoff multiplier)|`number`|Exponential backoff multiplier between retry attempts for failed Redis operations.<br/>Default: `2`<br/>Minimum: `1`<br/>||\n|**redis\\.oom\\.retry\\.initial\\.delay\\.ms**<br/>(Sink OOM retry initial delay)|`integer`|Initial delay in milliseconds before the first retry after a Redis out-of-memory error.<br/>Default: `1000`<br/>Minimum: `1`<br/>||\n|**redis\\.oom\\.retry\\.max\\.delay\\.ms**<br/>(Sink OOM retry max delay)|`integer`|Maximum delay in milliseconds between retry attempts after a Redis out-of-memory error.<br/>Default: `10000`<br/>Minimum: `1`<br/>||\n|**redis\\.oom\\.retry\\.backoff\\.multiplier**<br/>(Sink OOM retry backoff multiplier)|`number`|Exponential backoff multiplier between retry attempts after a Redis out-of-memory error.<br/>Default: `2`<br/>Minimum: `1`<br/>||\n|**redis\\.wait\\.enabled**<br/>(Sink replica wait enabled)|`boolean`|When `true`, the collector verifies that each write has been replicated to the configured number of Redis replica shards before acknowledging it.<br/>Default: `false`<br/>||\n|**redis\\.wait\\.timeout\\.ms**<br/>(Sink replica wait timeout)|`integer`|Maximum time in milliseconds to wait for replica write acknowledgements.<br/>Default: `1000`<br/>Minimum: `1`<br/>||\n|**redis\\.wait\\.write\\.timeout\\.ms**<br/>(Sink replica wait timeout)|`integer`|Maximum time in milliseconds to wait for replica write acknowledgements.<br/>Default: `1000`<br/>Minimum: `1`<br/>||\n|**redis\\.wait\\.retry\\.enabled**<br/>(Sink replica wait retry enabled)|`boolean`|When `true`, the collector keeps retrying a write until replica acknowledgement succeeds; when `false`, it gives up after the first failure.<br/>Default: `false`<br/>||\n|**redis\\.wait\\.retry\\.delay\\.ms**<br/>(Sink replica wait retry delay)|`integer`|Delay in milliseconds between replica wait retry attempts.<br/>Default: `1000`<br/>Minimum: `1`<br/>||\n\n**Additional Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|**Additional Properties**|`string`, `number`, `boolean`|||\n\n**Minimal Properties:** 1  \n**Example**\n\n[code example]\n\n<a name=\"sourcesadvancedsource\"></a>\n#### sources\\.advanced\\.source: Advanced source settings\n\nAdvanced configuration properties for the source database connection and CDC behavior. **Applies to the `cdc` and `flink` collector types.**<br/><br/>For the `cdc` collector type, available properties depend on the source database — refer to the relevant Debezium connector documentation: [MySQL](https://debezium.io/documentation/reference/stable/connectors/mysql.html), [MariaDB](https://debezium.io/documentation/reference/stable/connectors/mariadb.html), [PostgreSQL](https://debezium.io/documentation/reference/stable/connectors/postgresql.html), [Oracle](https://debezium.io/documentation/reference/stable/connectors/oracle.html), [SQL Server](https://debezium.io/documentation/reference/stable/connectors/sqlserver.html), [Db2](https://debezium.io/documentation/reference/stable/connectors/db2.html), [MongoDB](https://debezium.io/documentation/reference/stable/connectors/mongodb.html). When using a property from those pages, omit the `debezium.source.` prefix.<br/><br/>**The named properties below cover the most commonly tuned settings: `spanner.*` properties apply to the `flink` collector type, all others apply to the `cdc` collector type. Any other property from the Debezium documentation can still be set as a free-form key-value pair, except for `topic.prefix`, which RDI derives from the source name, and the keystore properties, which RDI configures from a source's TLS secret.**\n\n\n**Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|**record\\.processing\\.threads**<br/>(Record processing threads)|`integer`|Controls how many worker threads process captured records before they are written downstream.<br/>Minimum: `1`<br/>||\n|**snapshot\\.mode**<br/>(Snapshot mode)|`string`|Determines when a Debezium collector snapshots selected source data. Available modes and restart behavior depend on the source connector. A reset clears the saved offset without changing this mode or flushing the target. A new snapshot can leave stale target records after missed deletes. See [Choose a snapshot mode](https://redis.io/docs/latest/integrate/redis-data-integration/data-pipelines/pipeline-config#choose-a-snapshot-mode) for the mode comparison.<br/>Default: `\"initial\"`<br/>Enum: `\"always\"`, `\"initial\"`, `\"initial_only\"`, `\"never\"`, `\"no_data\"`, `\"when_needed\"`<br/>||\n|**snapshot\\.max\\.threads**<br/>(Snapshot max threads)|`integer`|Sets the maximum number of threads used while taking the initial snapshot.<br/>Default: `1`<br/>Minimum: `1`<br/>||\n|**poll\\.interval\\.ms**<br/>(Poll interval ms)|`integer`|Defines how often the collector polls the source for new changes.<br/>Default: `500`<br/>Minimum: `1`<br/>||\n|**snapshot\\.fetch\\.size**<br/>(Snapshot fetch size)|`integer`|Defines how many rows are fetched per batch during the initial snapshot.<br/>Minimum: `0`<br/>||\n|**max\\.batch\\.size**<br/>(Max batch size)|`integer`|Caps how many records are processed together in a single batch.<br/>Default: `2048`<br/>Minimum: `1`<br/>||\n|**max\\.queue\\.size**<br/>(Max queue size)|`integer`|Limits how many records can be buffered in memory before processing catches up.<br/>Default: `8192`<br/>Minimum: `1`<br/>||\n|**heartbeat\\.interval\\.ms**<br/>(Heartbeat interval ms)|`integer`|Sets how often heartbeat events are emitted to keep change tracking active. Use 0 to disable them.<br/>Default: `0`<br/>Minimum: `0`<br/>||\n|**heartbeat\\.action\\.query**<br/>(Heartbeat action query)|`string`|SQL query executed on the source whenever a heartbeat is emitted.<br/>||\n|**database\\.trustServerCertificate**<br/>(Trust SQL Server certificate)|`boolean`|Controls whether the RDI collector skips validation of the SQL Server TLS certificate. Enable this only when the server certificate cannot be validated through a trusted certificate authority.<br/>Default: `false`<br/>||\n|**driver\\.applicationIntent**<br/>(SQL Server application intent)|`string`|Declares the SQL Server workload type for the RDI collector. Set to `ReadOnly` when connecting to an Always On read-only replica. CDC must be enabled on the primary SQL Server node.<br/>Default: `\"ReadWrite\"`<br/>Enum: `\"ReadOnly\"`, `\"ReadWrite\"`<br/>||\n|**lob\\.enabled**<br/>(Lob enabled)|`boolean`|Determines whether large object columns are included in change capture.<br/>Default: `false`<br/>||\n|**gtid\\.source\\.includes**<br/>(GTID source includes)|`string`|Restricts MySQL GTID processing to the listed source UUIDs.<br/>||\n|**publication\\.autocreate\\.mode**<br/>(Publication autocreate mode)|`string`|Controls whether and how the PostgreSQL publication is created or updated automatically.<br/>Default: `\"all_tables\"`<br/>Enum: `\"all_tables\"`, `\"filtered\"`, `\"disabled\"`<br/>||\n|**publication\\.name**<br/>(Publication name)|`string`|Sets the PostgreSQL logical replication publication name used by the collector.<br/>Default: `\"dbz_publication\"`<br/>||\n|**slot\\.name**<br/>(Slot name)|`string`|Sets the PostgreSQL replication slot name the collector reads from.<br/>Default: `\"debezium\"`<br/>||\n|**capture\\.mode**<br/>(MongoDB capture mode)|`string`|Determines whether an update event carries the full document and its pre-image. Jobs that set an output key, and the set output types, need a `*_with_pre_image` mode and pre-images on the collections.<br/>Default: `\"change_streams_update_full\"`<br/>Enum: `\"change_streams\"`, `\"change_streams_update_full\"`, `\"change_streams_update_full_with_pre_image\"`, `\"change_streams_with_pre_image\"`<br/>||\n|**capture\\.mode\\.full\\.update\\.type**<br/>(MongoDB full update type)|`string`|Determines how the collector fetches the full document for an update event. `lookup` queries the source per event and can yield a null `after`; `post_image` reads the post-image and needs MongoDB 6.0.<br/>Default: `\"lookup\"`<br/>Enum: `\"lookup\"`, `\"post_image\"`<br/>||\n|**cursor\\.oversize\\.handling\\.mode**<br/>(MongoDB oversize event handling)|`string`|Determines what happens to a change event above the MongoDB 16 MB limit: `fail` stops the collector, `skip` drops it, `split` reassembles it. The limit covers the document and its pre-image.<br/>Default: `\"fail\"`<br/>Enum: `\"fail\"`, `\"skip\"`, `\"split\"`<br/>||\n|**cursor\\.oversize\\.skip\\.threshold**<br/>(MongoDB oversize skip threshold)|`integer`|Maximum size in bytes of the document, and of its pre-image, for which change events are processed. Only applies when `cursor.oversize.handling.mode` is `skip`, which requires a value above 0.<br/>Default: `0`<br/>Minimum: `0`<br/>||\n|**mongodb\\.authsource**<br/>(MongoDB authentication database)|`string`|Database that holds the credentials the collector authenticates with. Only applies to the connection's `user` and `password`; an `authSource` in `connection_string` takes precedence.<br/>Default: `\"admin\"`<br/>||\n|**mongodb\\.ssl\\.invalid\\.hostname\\.allowed**<br/>(Allow invalid MongoDB hostname)|`boolean`|Controls whether the RDI collector skips hostname verification of the MongoDB TLS certificate. Enable this only when the certificate cannot cover the hostnames the replica set advertises.<br/>Default: `false`<br/>||\n|**mongodb\\.connect\\.timeout\\.ms**<br/>(MongoDB connect timeout)|`integer`|Time in milliseconds the driver waits before it aborts a new connection attempt. The `connectTimeoutMS` option of `connection_string` takes precedence.<br/>Default: `10000`<br/>Minimum: `0`<br/>||\n|**mongodb\\.socket\\.timeout\\.ms**<br/>(MongoDB socket timeout)|`integer`|Time in milliseconds a send or receive on the socket may take before it times out, where 0 disables the timeout. The `socketTimeoutMS` option of `connection_string` takes precedence.<br/>Default: `0`<br/>Minimum: `0`<br/>||\n|**mongodb\\.server\\.selection\\.timeout\\.ms**<br/>(MongoDB server selection timeout)|`integer`|Time in milliseconds the driver waits to select a server before it fails with an error. The `serverSelectionTimeoutMS` option of `connection_string` takes precedence.<br/>Default: `30000`<br/>Minimum: `0`<br/>||\n|**mongodb\\.heartbeat\\.frequency\\.ms**<br/>(MongoDB heartbeat frequency)|`integer`|Interval in milliseconds at which the cluster monitor reaches each MongoDB server. The `heartbeatFrequencyMS` option of `connection_string` takes precedence.<br/>Default: `10000`<br/>Minimum: `0`<br/>||\n|**spanner\\.version\\.retention\\.period\\.hours**<br/>(Spanner version retention period)|`integer`|Retention period in hours for Spanner change stream versions. Determines how far back the collector can resume after an outage.<br/>Default: `1`<br/>Minimum: `1`<br/>||\n|**spanner\\.fetch\\.timeout\\.ms**<br/>(Spanner fetch timeout)|`integer`|Timeout in milliseconds for a single change stream fetch request to Spanner.<br/>Default: `500`<br/>Minimum: `1`<br/>||\n|**spanner\\.fetch\\.heartbeat\\.ms**<br/>(Spanner fetch heartbeat interval)|`integer`|Interval in milliseconds at which Spanner sends heartbeat records when no data changes are available.<br/>Default: `100`<br/>Minimum: `1`<br/>||\n|**spanner\\.max\\.rows\\.per\\.partition**<br/>(Spanner max rows per partition)|`integer`|Maximum number of rows the collector reads from a single Spanner change stream partition before yielding.<br/>Default: `10000`<br/>Minimum: `1`<br/>||\n|**spanner\\.dialect**<br/>(Spanner SQL dialect)|`string`|SQL dialect of the Spanner database. Use `GOOGLESQL` for Google Standard SQL or `POSTGRESQL` for the PostgreSQL interface.<br/>Default: `\"GOOGLESQL\"`<br/>Enum: `\"GOOGLESQL\"`, `\"POSTGRESQL\"`<br/>||\n\n**Additional Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|**Additional Properties**|`string`, `number`, `boolean`|||\n\n**Minimal Properties:** 1  \n**Example**\n\n[code example]\n\n<a name=\"sourcesadvancedquarkus\"></a>\n#### sources\\.advanced\\.quarkus: Quarkus runtime settings\n\nAdvanced configuration properties for the Quarkus runtime that hosts Debezium Server. **Only applies to the `cdc` collector type.** See the [Debezium Server documentation](https://debezium.io/documentation/reference/stable/operations/debezium-server.html) for runtime configuration options. When using a property from that page, omit the `quarkus.` prefix.\n\n\n**Additional Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|**Additional Properties**|`string`, `number`, `boolean`|||\n\n**Minimal Properties:** 1  \n<a name=\"sourcesadvancedflink\"></a>\n#### sources\\.advanced\\.flink: Advanced Flink settings\n\nAdvanced configuration properties forwarded to the Flink runtime that hosts the collector. Any property listed in the [Flink configuration documentation](https://nightlies.apache.org/flink/flink-docs-release-2.0/docs/deployment/config/) can be set here and will override the RDI default. **Only applies to the `flink` collector type.**<br/><br/>The properties listed below are the ones most likely to require adjustment. **Changing any other Flink property is not recommended unless instructed by Redis support.**\n\n\n**Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|**parallelism\\.default**<br/>(Default parallelism)|`integer`|Default parallelism for Flink jobs and operators. When unset, Flink uses the number of available task slots across all task managers (`taskManager.replicas × taskmanager.numberOfTaskSlots`). See [parallel execution](https://nightlies.apache.org/flink/flink-docs-release-2.0/docs/dev/datastream/execution/parallel/).<br/>Minimum: `1`<br/>||\n|**taskmanager\\.numberOfTaskSlots**<br/>(Task slots per task manager)|`integer`|Number of parallel task slots per task manager pod. Each slot can run one parallel pipeline instance, so this caps the parallelism a single task manager can absorb. See [task slots and resources](https://nightlies.apache.org/flink/flink-docs-release-2.0/docs/concepts/flink-architecture/#task-slots-and-resources).<br/>Default: `1`<br/>Minimum: `1`<br/>||\n|**taskmanager\\.memory\\.process\\.size**<br/>(Task manager process memory)|`string`|Total memory budget for each task manager JVM process, expressed with a unit suffix such as `2048m` or `4g`. See [task manager memory configuration](https://nightlies.apache.org/flink/flink-docs-release-2.0/docs/deployment/memory/mem_setup_tm/).<br/>||\n\n**Additional Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|**Additional Properties**|`string`, `number`, `boolean`|||\n\n**Minimal Properties:** 1  \n**Example**\n\n[code example]\n\n<a name=\"sourcesadvancedresources\"></a>\n#### sources\\.advanced\\.resources: Collector resource settings\n\nCompute resources allocated to the collector. **Only applies to the `cdc` collector type.**\n\n\n**Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|**cpu**<br/>(CPU resource value)|`string`|CPU request for the collector container, for example `1` or `500m`.<br/>||\n|**memory**<br/>(Memory resource value)|`string`|Memory request for the collector container, for example `1024Mi` or `2Gi`.<br/>||\n\n**Additional Properties:** not allowed  \n**Minimal Properties:** 1  \n<a name=\"sourcesadvancedriotx\"></a>\n#### sources\\.advanced\\.riotx: Advanced RIOT\\-X settings\n\nAdvanced configuration properties for the RIOT-X Snowflake collector. **Only applies to the `riotx` collector type.**\n\n\n**Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|**poll**<br/>(Polling interval)|`string`|Interval between polls for new stream changes, for example `30s` or `PT30S`.<br/>Default: `\"30s\"`<br/>||\n|**snapshot**<br/>(Snapshot mode)|`string`|Initial-load behavior. `INITIAL` performs a one-time snapshot before streaming; `NEVER` skips the snapshot.<br/>Default: `\"INITIAL\"`<br/>Enum: `\"INITIAL\"`, `\"NEVER\"`<br/>||\n|**streamPrefix**<br/>(Redis stream key prefix)|`string`|Prefix used when constructing Redis stream keys, for example `data:`.<br/>Default: `\"data:\"`<br/>||\n|**streamLimit**<br/>(Maximum stream length)|`integer`|Maximum number of entries kept in each Redis stream before older entries are trimmed.<br/>Minimum: `1`<br/>||\n|[**keyColumns**](#sourcesadvancedriotxkeycolumns)<br/>(Key columns)|`string[]`|Deprecated RIOTX global fallback list of columns to use as message keys for every captured table. Prefer `tables.<schema.table>.keys`<br/>||\n|**clearOffset**<br/>(Clear existing offset)|`boolean`|When `true`, the stored offset is cleared on startup, forcing a fresh read.<br/>Default: `false`<br/>||\n|**count**<br/>(Record count limit)|`integer`|Maximum number of records to process. Set to `0` for unlimited.<br/>Default: `0`<br/>Minimum: `0`<br/>||\n\n**Additional Properties:** not allowed  \n**Minimal Properties:** 1  \n**Example**\n\n[code example]\n\n<a name=\"sourcesadvancedriotxkeycolumns\"></a>\n##### sources\\.advanced\\.riotx\\.keyColumns\\[\\]: Key columns\n\nDeprecated RIOTX global fallback list of columns to use as message keys for every captured table. Prefer `tables.<schema.table>.keys`\n\n\n<a name=\"sourcesadvanceddiagnostics\"></a>\n#### sources\\.advanced\\.diagnostics: Collector diagnostics\n\nOpt-in JVM diagnostics for the source collector. Each artifact is written to the `/opt/rdi/diagnostics` directory on the host and included in the `dump-support-package` bundle. **Only applies to the `cdc` collector type on VM installations, and is ignored otherwise.**\n\n\n**Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|[**heap\\_dump**](#sourcesadvanceddiagnosticsheap_dump)<br/>(Heap dump on out\\-of\\-memory)|`object`|Writes a heap dump if the JVM runs out of memory, then exits so the collector restarts cleanly.<br/>||\n|[**java\\_flight\\_recorder**](#sourcesadvanceddiagnosticsjava_flight_recorder)<br/>(Java Flight Recorder recording)|`object`|Records a Java Flight Recorder profile of the collector at startup. RDI controls `filename` and `dumponexit`, and defaults `settings=profile`, `duration=5m`, and `maxsize=128m` unless set under `options`.<br/>||\n\n**Additional Properties:** not allowed  \n**Minimal Properties:** 1  \n**Example**\n\n[code example]\n\n<a name=\"sourcesadvanceddiagnosticsheap_dump\"></a>\n##### sources\\.advanced\\.diagnostics\\.heap\\_dump: Heap dump on out\\-of\\-memory\n\nWrites a heap dump if the JVM runs out of memory, then exits so the collector restarts cleanly.\n\n\n**Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|**enabled**<br/>(Enable heap dump)|`boolean`|When `true`, the collector writes a heap dump if the JVM runs out of memory, then exits so it restarts cleanly.<br/>Default: `false`<br/>||\n\n**Additional Properties:** not allowed  \n**Minimal Properties:** 1  \n**Example**\n\n[code example]\n\n<a name=\"sourcesadvanceddiagnosticsjava_flight_recorder\"></a>\n##### sources\\.advanced\\.diagnostics\\.java\\_flight\\_recorder: Java Flight Recorder recording\n\nRecords a Java Flight Recorder profile of the collector at startup. RDI controls `filename` and `dumponexit`, and defaults `settings=profile`, `duration=5m`, and `maxsize=128m` unless set under `options`.\n\n\n**Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|**enabled**<br/>(Enable flight recording)|`boolean`|When `true`, starts a Java Flight Recorder recording when the collector starts.<br/>Default: `false`<br/>||\n|**options**<br/>(Flight Recorder options)|`string`|Comma-separated `-XX:StartFlightRecording` options, for example `duration=10m,maxsize=256m,path-to-gc-roots=true`.<br/>||\n\n**Additional Properties:** not allowed  \n**Minimal Properties:** 1  \n**Example**\n\n[code example]\n\n<a name=\"targets\"></a>"
    },
    {
      "id": "targets-target-connections",
      "title": "targets: Target connections",
      "role": "content",
      "text": "Target Redis databases where processed records are written. Each key is a target identifier; the value configures the connection.\n\n\n**Properties** (key: `.*`)\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|[**connection**](#targetsconnection)<br/>(Database connection)|`object`|Connection configuration for a Redis database.<br/>|yes|\n|**name**<br/>(Target name)|`string`|Human-readable name for the target connection. Maximum 100 characters.<br/>Maximal Length: `100`<br/>|no|\n\n\n<a name=\"targetsconnection\"></a>"
    },
    {
      "id": "targetsconnection-database-connection",
      "title": "targets\\.connection: Database connection",
      "role": "content",
      "text": "Connection configuration for a Redis database.\n\n\n**Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|**type**<br/>(Database type)||Database type identifier. Always `redis` for this connection.<br/>Constant Value: `\"redis\"`<br/>|yes|\n|**host**<br/>(Database host)|`string`|Hostname or IP address of the Redis server.<br/>|yes|\n|**port**<br/>(Database port)|`integer`|Network port on which the Redis server is listening.<br/>Minimum: `1`<br/>Maximum: `65535`<br/>|yes|\n|**user**<br/>(Database user)|`string`|Username for authentication to the Redis database.<br/>|no|\n|**password**<br/>(Database password)|`string`|Password for authentication to the Redis database.<br/>|no|\n|**key**<br/>(Private key file)|`string`|Path to the private key file used for SSL/TLS client authentication.<br/>|no|\n|**key\\_password**<br/>(Private key password)|`string`|Password used to decrypt the private key file.<br/>|no|\n|**cert**<br/>(Client certificate)|`string`|Path to the client certificate file used for SSL/TLS client authentication.<br/>|no|\n|**cacert**<br/>(CA certificate)|`string`|Path to the Certificate Authority (CA) certificate file used to verify the server's TLS certificate.<br/>|no|\n\n**Additional Properties:** not allowed  \n**Minimal Properties:** 3  \n**If property *key* is defined**, property/ies *cert* is/are required.  \n**If property *cert* is defined**, property/ies *key* is/are required.  \n**If property *key_password* is defined**, property/ies *key* is/are required.  \n<a name=\"processors\"></a>"
    },
    {
      "id": "processors-data-processing-configuration",
      "title": "processors: Data processing configuration",
      "role": "content",
      "text": "Settings that control how data is processed, including batch sizes, error handling, and performance tuning.\n\n\n**Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|**type**<br/>(Processor type)|`string`|Processor implementation to run. Use `flink` (default) for the Apache Flink-based processor. Use `classic` for the classic processor.<br/>Default: `\"flink\"`<br/>Enum: `\"classic\"`, `\"flink\"`<br/>||\n|**read\\_batch\\_size**|`integer`, `string`|Maximum number of records read from the source streams in a single batch.<br/>Default: `2000`<br/>Pattern: `^\\${.*}$`<br/>Minimum: `1`<br/>||\n|**read\\_batch\\_timeout\\_ms**<br/>(Read batch timeout)|`integer`|Maximum time in milliseconds to wait for a batch to fill before processing it.<br/>Default: `100`<br/>Minimum: `1`<br/>||\n|**duration**<br/>(Batch duration limit)|`integer`, `string`|(DEPRECATED)<br/>This property has no effect; use `read_batch_timeout_ms` instead.<br/>Default: `100`<br/>Pattern: `^\\${.*}$`<br/>Minimum: `1`<br/>||\n|**write\\_batch\\_size**|`integer`, `string`|Maximum number of records written to the target Redis database in a single batch.<br/>Default: `200`<br/>Pattern: `^\\${.*}$`<br/>Minimum: `1`<br/>||\n|**enable\\_async\\_processing**|`boolean`|When `true`, the processor handles batches asynchronously to improve throughput. **Classic processor only.**<br/>Default: `true`<br/>||\n|**batch\\_queue\\_size**|`integer`|Maximum number of batches queued for processing. **Classic processor only.**<br/>Default: `3`<br/>Minimum: `1`<br/>||\n|**ack\\_queue\\_size**|`integer`|Maximum number of batches queued for asynchronous acknowledgement. **Classic processor only.**<br/>Default: `10`<br/>Minimum: `1`<br/>||\n|**dedup**<br/>(Enable deduplication)|`boolean`|When `true`, the processor deduplicates incoming records. **Classic processor only.**<br/>Default: `false`<br/>||\n|**dedup\\_max\\_size**<br/>(Deduplication set size)|`integer`|Maximum number of entries kept in the deduplication set. **Classic processor only.**<br/>Default: `1024`<br/>Minimum: `1`<br/>||\n|**dedup\\_strategy**<br/>(Deduplication strategy)|`string`|(DEPRECATED)<br/>This property has no effect — the only supported strategy is `ignore`. Remove it from the configuration. **Classic processor only.**<br/>Default: `\"ignore\"`<br/>Enum: `\"reject\"`, `\"ignore\"`<br/>||\n|**error\\_handling**<br/>(Error handling strategy)|`string`|Strategy for handling failed records. `ignore` silently drops them; `dlq` writes them to the dead-letter queue.<br/>Default: `\"dlq\"`<br/>||\n|**dlq\\_max\\_messages**<br/>(DLQ message limit)|`integer`, `string`|Maximum number of messages stored per dead-letter queue stream.<br/>Default: `1000`<br/>Pattern: `^\\${.*}$`<br/>Minimum: `1`<br/>||\n|**target\\_data\\_type**<br/>(Target Redis data type)|`string`|Data type used to store target records in Redis. `hash` writes a Redis Hash; `json` writes a RedisJSON document and requires the RedisJSON module.<br/>Default: `\"hash\"`<br/>||\n|**json\\_update\\_strategy**|`string`|Strategy for updating existing JSON documents in Redis. `replace` overwrites the entire document; `merge` merges incoming fields into it.<br/>Default: `\"replace\"`<br/>||\n|**use\\_native\\_json\\_merge**<br/>(Use native JSON merge from RedisJSON module)|`boolean`|Controls whether JSON merge operations use the native `JSON.MERGE` command (when `true`) or Lua scripts (when `false`). Introduced in RDI 1.15.0. The native command provides 2x performance improvement but handles null values differently:<br/><br/>**Previous behavior (Lua merge)**: When merging `{\"field1\": \"value1\", \"field2\": \"value2\"}` with `{\"field2\": null, \"field3\": \"value3\"}`, the result was `{\"field1\": \"value1\", \"field2\": null, \"field3\": \"value3\"}` (null value is preserved).<br/><br/>**New behavior (JSON.MERGE)**: The same merge produces `{\"field1\": \"value1\", \"field3\": \"value3\"}` (null value removes the field, following [RFC 7396](https://datatracker.ietf.org/doc/html/rfc7396)).<br/><br/>**Note**: The native `JSON.MERGE` command requires RedisJSON 2.6.0 or higher. If the target database has an older version of RedisJSON, RDI automatically falls back to Lua-based merge operations regardless of this setting.<br/><br/>**Impact**: If your application logic distinguishes between a field with a `null` value and a missing field, you may need to adjust your data handling. This follows the JSON Merge Patch RFC standard but differs from the previous Lua implementation. Set to `false` to revert to the previous Lua-based merge behavior if needed.<br/><br/>The Flink processor always uses the native `JSON.MERGE` command when the target database supports it. **Classic processor only.**<br/>Default: `true`<br/>||\n|**initial\\_sync\\_processes**|`integer`, `string`|Number of parallel processes used to perform the initial data synchronization. For the Flink processor, parallelism is controlled by Flink properties instead. **Classic processor only.**<br/>Default: `4`<br/>Pattern: `^\\${.*}$`<br/>Minimum: `1`<br/>Maximum: `32`<br/>||\n|**idle\\_sleep\\_time\\_ms**<br/>(Idle sleep interval)|`integer`, `string`|Time in milliseconds to sleep between processing batches when idle. **Classic processor only.**<br/>Default: `200`<br/>Pattern: `^\\${.*}$`<br/>Minimum: `1`<br/>Maximum: `999999`<br/>||\n|**idle\\_streams\\_check\\_interval\\_ms**<br/>(Idle streams check interval)|`integer`, `string`|Time in milliseconds between checks for new streams when the processor is idle. For the Flink processor, use `processors.advanced.source.discovery.interval.ms` instead to configure a single discovery interval regardless of load. **Classic processor only.**<br/>Default: `1000`<br/>Pattern: `^\\${.*}$`<br/>Minimum: `1`<br/>Maximum: `999999`<br/>||\n|**busy\\_streams\\_check\\_interval\\_ms**<br/>(Busy streams check interval)|`integer`, `string`|Time in milliseconds between checks for new streams when the processor is busy. For the Flink processor, use `processors.advanced.source.discovery.interval.ms` instead to configure a single discovery interval regardless of load. **Classic processor only.**<br/>Default: `5000`<br/>Pattern: `^\\${.*}$`<br/>Minimum: `1`<br/>Maximum: `999999`<br/>||\n|**retry\\_max\\_attempts**<br/>(Maximum retry attempts)|`integer`, `string`|Maximum number of attempts for a failed write to the target Redis database before giving up.<br/>Default: `5`<br/>Pattern: `^\\${.*}$`<br/>Minimum: `1`<br/>||\n|**retry\\_initial\\_delay\\_ms**<br/>(Initial retry delay)|`integer`, `string`|Initial delay in milliseconds before the first retry of a failed write.<br/>Default: `1000`<br/>Pattern: `^\\${.*}$`<br/>Minimum: `1`<br/>Maximum: `999999`<br/>||\n|**retry\\_max\\_delay\\_ms**<br/>(Maximum retry delay)|`integer`, `string`|Maximum delay in milliseconds between retry attempts.<br/>Default: `10000`<br/>Pattern: `^\\${.*}$`<br/>Minimum: `1`<br/>Maximum: `999999`<br/>||\n|**wait\\_enabled**<br/>(Enable replica wait)|`boolean`|When `true`, RDI verifies that each write has been replicated to the target database's replica shards before acknowledging it. Enable this only when target database replication is enabled and a healthy replica is available. For the Flink processor, `processors.advanced.target.wait.enabled` takes priority.<br/>Default: `false`<br/>||\n|**wait\\_timeout**<br/>(Replica wait timeout)|`integer`, `string`|Maximum time in milliseconds to wait for replica write verification on the target database.<br/>Default: `1000`<br/>Pattern: `^\\${.*}$`<br/>Minimum: `1`<br/>||\n|**retry\\_on\\_replica\\_failure**|`boolean`|When `true`, RDI keeps retrying a write until replica replication is confirmed; when `false`, it gives up after the first failure.<br/>Default: `true`<br/>||\n|**on\\_failed\\_retry\\_interval**<br/>(Retry interval on failure)|`integer`, `string`|(DEPRECATED)<br/>This property has no effect; remove it from the configuration.<br/>Default: `5`<br/>Pattern: `^\\${.*}$`<br/>Minimum: `1`<br/>||\n|[**logging**](#processorslogging)<br/>(Logging configuration)|`object`|Logging settings for the processor. **Flink processor only.**<br/>||\n|[**advanced**](#processorsadvanced)<br/>(Advanced configuration)|`object`|Advanced configuration for fine-tuning the processor. **All properties under `advanced` apply to the Flink processor only and are silently ignored by the classic processor.**<br/>||\n\n**Additional Properties:** not allowed  \n<a name=\"processorslogging\"></a>"
    },
    {
      "id": "processorslogging-logging-configuration",
      "title": "processors\\.logging: Logging configuration",
      "role": "content",
      "text": "Logging settings for the processor. **Flink processor only.**\n\n\n**Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|**level**<br/>(Logging level)|`string`|Log verbosity for the processor.<br/>Default: `\"info\"`<br/>Enum: `\"trace\"`, `\"debug\"`, `\"info\"`, `\"warn\"`, `\"error\"`<br/>||\n\n**Additional Properties:** not allowed  \n**Example**\n\n[code example]\n\n<a name=\"processorsadvanced\"></a>"
    },
    {
      "id": "processorsadvanced-advanced-configuration",
      "title": "processors\\.advanced: Advanced configuration",
      "role": "content",
      "text": "Advanced configuration for fine-tuning the processor. **All properties under `advanced` apply to the Flink processor only and are silently ignored by the classic processor.**\n\n\n**Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|[**source**](#processorsadvancedsource)<br/>(Advanced source settings)|`object`|Advanced configuration properties for the source Redis client and streams reader. **Flink processor only.**<br/>||\n|[**target**](#processorsadvancedtarget)<br/>(Advanced target settings)|`object`|Advanced configuration properties for the target Redis client and sink. **Flink processor only.**<br/>||\n|[**dlq**](#processorsadvanceddlq)<br/>(Advanced DLQ settings)|`object`|Advanced configuration properties for the DLQ Redis client and sink. **Flink processor only.**<br/>||\n|[**processor**](#processorsadvancedprocessor)<br/>(Advanced processor settings)|`object`|Advanced configuration properties for the processor. **Flink processor only.**<br/>||\n|[**flink**](#processorsadvancedflink)<br/>(Advanced Flink settings)|`object`|Advanced configuration properties forwarded to the underlying Flink runtime. Any property listed in the [Flink configuration documentation](https://nightlies.apache.org/flink/flink-docs-release-2.0/docs/deployment/config/) can be set here and will override the RDI default. **Flink processor only.**<br/>||\n|[**resources**](#processorsadvancedresources)<br/>(Advanced resource settings)|`object`|Compute resources allocated to the Flink job, such as the number of task manager pods. **Flink processor only.**<br/>||\n\n**Additional Properties:** not allowed  \n**Minimal Properties:** 1  \n**Example**\n\n[code example]\n\n<a name=\"processorsadvancedsource\"></a>\n#### processors\\.advanced\\.source: Advanced source settings\n\nAdvanced configuration properties for the source Redis client and streams reader. **Flink processor only.**\n\n\n**Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|**stream\\.name\\.pattern**<br/>(Source stream name pattern)|`string`|Glob pattern used to discover input streams in the source Redis database, for example `data:*`.<br/>Default: `\"data:*\"`<br/>||\n|**discovery\\.interval\\.ms**<br/>(Stream discovery interval)|`integer`|Time in milliseconds between checks for new input streams. Replaces the classic `processors.idle_streams_check_interval_ms` and `processors.busy_streams_check_interval_ms` properties.<br/>Default: `1000`<br/>Minimum: `0`<br/>||\n|**batch\\.size**<br/>(Source batch size)|`integer`|Maximum number of records the source operator reads in a single batch. Alias for `processors.read_batch_size`; takes priority when both are set.<br/>Default: `2000`<br/>Minimum: `1`<br/>||\n|**batch\\.timeout\\.ms**<br/>(Source batch timeout)|`integer`|Maximum time in milliseconds to wait for a source batch to fill before processing. Alias for `processors.read_batch_timeout_ms`; takes priority when both are set.<br/>Default: `100`<br/>Minimum: `1`<br/>||\n|**connection\\.timeout\\.ms**<br/>(Source connection timeout)|`integer`|Connection timeout in milliseconds for the source Redis client.<br/>Default: `2000`<br/>Minimum: `1`<br/>||\n|**socket\\.timeout\\.ms**<br/>(Source socket timeout)|`integer`|Socket read/write timeout in milliseconds for the source Redis client.<br/>Default: `2000`<br/>Minimum: `1`<br/>||\n|**retry\\.max\\.attempts**<br/>(Source retry max attempts)|`integer`|Maximum number of retry attempts for failed source Redis operations.<br/>Default: `5`<br/>Minimum: `1`<br/>||\n|**retry\\.initial\\.delay\\.ms**<br/>(Source retry initial delay)|`integer`|Initial delay in milliseconds before the first retry of a failed source Redis operation.<br/>Default: `100`<br/>Minimum: `1`<br/>||\n|**retry\\.max\\.delay\\.ms**<br/>(Source retry max delay)|`integer`|Maximum delay in milliseconds between retry attempts for source Redis operations.<br/>Default: `3000`<br/>Minimum: `1`<br/>||\n|**retry\\.backoff\\.multiplier**<br/>(Source retry backoff multiplier)|`number`|Exponential backoff multiplier between retry attempts for source Redis operations.<br/>Default: `2`<br/>Minimum: `1`<br/>||\n\n**Additional Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|**Additional Properties**|`string`, `number`, `boolean`|||\n\n**Minimal Properties:** 1  \n**Example**\n\n[code example]\n\n<a name=\"processorsadvancedtarget\"></a>\n#### processors\\.advanced\\.target: Advanced target settings\n\nAdvanced configuration properties for the target Redis client and sink. **Flink processor only.**\n\n\n**Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|**batch\\.size**<br/>(Target sink batch size)|`integer`|Maximum number of records the target sink writes in a single batch. Alias for `processors.write_batch_size`; takes priority when both are set.<br/>Default: `200`<br/>Minimum: `1`<br/>||\n|**flush\\.interval\\.ms**<br/>(Target sink flush interval)|`integer`|Maximum time in milliseconds the target sink waits to fill a batch before flushing it to Redis.<br/>Default: `100`<br/>Minimum: `1`<br/>||\n|**connection\\.timeout\\.ms**<br/>(Target connection timeout)|`integer`|Connection timeout in milliseconds for the target Redis client.<br/>Default: `2000`<br/>Minimum: `1`<br/>||\n|**socket\\.timeout\\.ms**<br/>(Target socket timeout)|`integer`|Socket read/write timeout in milliseconds for the target Redis client.<br/>Default: `2000`<br/>Minimum: `1`<br/>||\n|**retry\\.max\\.attempts**<br/>(Target retry max attempts)|`integer`|Maximum number of retry attempts for failed target Redis operations. Alias for `processors.retry_max_attempts`; takes priority when both are set.<br/>Default: `5`<br/>Minimum: `1`<br/>||\n|**retry\\.initial\\.delay\\.ms**<br/>(Target retry initial delay)|`integer`|Initial delay in milliseconds before the first retry of a failed target Redis operation. Alias for `processors.retry_initial_delay_ms`; takes priority when both are set.<br/>Default: `1000`<br/>Minimum: `1`<br/>||\n|**retry\\.max\\.delay\\.ms**<br/>(Target retry max delay)|`integer`|Maximum delay in milliseconds between retry attempts for target Redis operations. Alias for `processors.retry_max_delay_ms`; takes priority when both are set.<br/>Default: `10000`<br/>Minimum: `1`<br/>||\n|**retry\\.backoff\\.multiplier**<br/>(Target retry backoff multiplier)|`number`|Exponential backoff multiplier between retry attempts for target Redis operations.<br/>Default: `2`<br/>Minimum: `1`<br/>||\n|**wait\\.enabled**<br/>(Target replica wait enabled)|`boolean`|When `true`, RDI verifies that each write has been replicated to the target database's replica shards before acknowledging it. Enable this only when target database replication is enabled and a healthy replica is available. Alias for `processors.wait_enabled`; takes priority when both are set.<br/>Default: `false`<br/>||\n|**wait\\.write\\.timeout\\.ms**<br/>(Target replica wait timeout)|`integer`|Maximum time in milliseconds to wait for target replica write verification. Alias for `processors.wait_timeout`; takes priority when both are set.<br/>Default: `1000`<br/>Minimum: `1`<br/>||\n|**wait\\.retry\\.enabled**<br/>(Target replica wait retry enabled)|`boolean`|When `true`, RDI keeps retrying a target write until replica replication is confirmed; when `false`, it gives up after the first failure. Alias for `processors.retry_on_replica_failure`; takes priority when both are set. When enabled, the Flink processor retries indefinitely. Failed checkpoints can restart the job, after which the retries resume. The classic processor retries once.<br/>Default: `true`<br/>||\n|**wait\\.retry\\.delay\\.ms**<br/>(Target replica wait retry delay)|`integer`|Delay in milliseconds between target replica wait retry attempts.<br/>Default: `1000`<br/>Minimum: `1`<br/>||\n\n**Additional Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|**Additional Properties**|`string`, `number`, `boolean`|||\n\n**Minimal Properties:** 1  \n**Example**\n\n[code example]\n\n<a name=\"processorsadvanceddlq\"></a>\n#### processors\\.advanced\\.dlq: Advanced DLQ settings\n\nAdvanced configuration properties for the DLQ Redis client and sink. **Flink processor only.**\n\n\n**Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|**max\\.len**<br/>(DLQ sink max length)|`integer`|Maximum number of messages stored per dead letter queue stream. Alias for `processors.dlq_max_messages`; takes priority when both are set.<br/>Default: `1000`<br/>Minimum: `1`<br/>||\n|**batch\\.size**<br/>(DLQ sink batch size)|`integer`|Maximum number of records the DLQ sink writes in a single batch.<br/>Default: `100`<br/>Minimum: `1`<br/>||\n|**flush\\.interval\\.ms**<br/>(DLQ sink flush interval)|`integer`|Maximum time in milliseconds the DLQ sink waits to fill a batch before flushing it to Redis.<br/>Default: `100`<br/>Minimum: `1`<br/>||\n|**connection\\.timeout\\.ms**<br/>(DLQ connection timeout)|`integer`|Connection timeout in milliseconds for the DLQ Redis client.<br/>Default: `2000`<br/>Minimum: `1`<br/>||\n|**socket\\.timeout\\.ms**<br/>(DLQ socket timeout)|`integer`|Socket read/write timeout in milliseconds for the DLQ Redis client.<br/>Default: `2000`<br/>Minimum: `1`<br/>||\n|**retry\\.max\\.attempts**<br/>(DLQ retry max attempts)|`integer`|Maximum number of retry attempts for failed DLQ Redis operations.<br/>Default: `1`<br/>Minimum: `1`<br/>||\n|**retry\\.initial\\.delay\\.ms**<br/>(DLQ retry initial delay)|`integer`|Initial delay in milliseconds before the first retry of a failed DLQ Redis operation.<br/>Default: `100`<br/>Minimum: `1`<br/>||\n|**retry\\.max\\.delay\\.ms**<br/>(DLQ retry max delay)|`integer`|Maximum delay in milliseconds between retry attempts for DLQ Redis operations.<br/>Default: `3000`<br/>Minimum: `1`<br/>||\n|**retry\\.backoff\\.multiplier**<br/>(DLQ retry backoff multiplier)|`number`|Exponential backoff multiplier between retry attempts for DLQ Redis operations.<br/>Default: `2`<br/>Minimum: `1`<br/>||\n|**wait\\.enabled**<br/>(DLQ replica wait enabled)|`boolean`|When `true`, RDI verifies that each DLQ write has been replicated to the DLQ database's replica shards before acknowledging it.<br/>Default: `false`<br/>||\n|**wait\\.write\\.timeout\\.ms**<br/>(DLQ replica wait timeout)|`integer`|Maximum time in milliseconds to wait for DLQ replica write verification.<br/>Default: `1000`<br/>Minimum: `1`<br/>||\n|**wait\\.retry\\.enabled**<br/>(DLQ replica wait retry enabled)|`boolean`|When `true`, RDI keeps retrying a DLQ write until replica replication is confirmed; when `false`, it gives up after the first failure.<br/>Default: `false`<br/>||\n|**wait\\.retry\\.delay\\.ms**<br/>(DLQ replica wait retry delay)|`integer`|Delay in milliseconds between DLQ replica wait retry attempts.<br/>Default: `1000`<br/>Minimum: `1`<br/>||\n\n**Additional Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|**Additional Properties**|`string`, `number`, `boolean`|||\n\n**Minimal Properties:** 1  \n**Example**\n\n[code example]\n\n<a name=\"processorsadvancedprocessor\"></a>\n#### processors\\.advanced\\.processor: Advanced processor settings\n\nAdvanced configuration properties for the processor. **Flink processor only.**\n\n\n**Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|**default\\.data\\.type**<br/>(Default target data type)|`string`|Data type to use in Redis when not overridden per job: `hash` for Redis Hash, `json` for RedisJSON. Alias for `processors.target_data_type`; takes priority when both are set.<br/>Default: `\"hash\"`<br/>Enum: `\"hash\"`, `\"json\"`<br/>||\n|**default\\.json\\.update\\.strategy**<br/>(Default JSON update strategy)|`string`|Strategy for updating JSON data in Redis: `replace` to overwrite the entire JSON object, `merge` to merge new data with the existing JSON object. Alias for `processors.json_update_strategy`; takes priority when both are set.<br/>Default: `\"replace\"`<br/>Enum: `\"replace\"`, `\"merge\"`<br/>||\n|**dlq\\.enabled**<br/>(Enable DLQ)|`boolean`|When `true`, rejected messages are stored in the dead-letter queue; when `false`, errors are silently skipped. Alias for `processors.error_handling`; takes priority when both are set.<br/>Default: `true`<br/>||\n\n**Additional Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|**Additional Properties**|`string`, `number`, `boolean`|||\n\n**Minimal Properties:** 1  \n**Example**\n\n[code example]\n\n<a name=\"processorsadvancedflink\"></a>\n#### processors\\.advanced\\.flink: Advanced Flink settings\n\nAdvanced configuration properties forwarded to the underlying Flink runtime. Any property listed in the [Flink configuration documentation](https://nightlies.apache.org/flink/flink-docs-release-2.0/docs/deployment/config/) can be set here and will override the RDI default. **Flink processor only.**<br/><br/>The properties listed below are the ones most likely to require adjustment. **Changing any other Flink property is not recommended unless instructed by Redis support.**\n\n\n**Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|**parallelism\\.default**<br/>(Default parallelism)|`integer`|Default parallelism for jobs and operators. When unset, Flink uses the number of available task slots across all task managers (`taskManager.replicas × taskmanager.numberOfTaskSlots`). Increase to fan out work across more task slots; see [parallel execution](https://nightlies.apache.org/flink/flink-docs-release-2.0/docs/dev/datastream/execution/parallel/).<br/>Minimum: `1`<br/>||\n|**taskmanager\\.numberOfTaskSlots**<br/>(Task slots per task manager)|`integer`|Number of parallel task slots per task manager pod. Each slot can run one parallel pipeline instance, so this caps the parallelism a single task manager can absorb. See [task slots and resources](https://nightlies.apache.org/flink/flink-docs-release-2.0/docs/concepts/flink-architecture/#task-slots-and-resources).<br/>Default: `1`<br/>Minimum: `1`<br/>||\n|**taskmanager\\.memory\\.process\\.size**<br/>(Task manager process memory)|`string`|Total memory budget for each task manager JVM process (heap + managed + network + metaspace + JVM overhead), expressed with a unit suffix such as `2048m` or `4g`. See [task manager memory configuration](https://nightlies.apache.org/flink/flink-docs-release-2.0/docs/deployment/memory/mem_setup_tm/).<br/>Default: `\"2048m\"`<br/>||\n\n**Additional Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|**Additional Properties**|`string`, `number`, `boolean`|||\n\n**Minimal Properties:** 1  \n**Example**\n\n[code example]\n\n<a name=\"processorsadvancedresources\"></a>\n#### processors\\.advanced\\.resources: Advanced resource settings\n\nCompute resources allocated to the Flink job, such as the number of task manager pods. **Flink processor only.**\n\n\n**Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|[**taskManager**](#processorsadvancedresourcestaskmanager)<br/>(Task manager resource settings)|`object`|Resource settings for Flink task manager pods.<br/>||\n\n**Additional Properties:** not allowed  \n**Minimal Properties:** 1  \n**Example**\n\n[code example]\n\n<a name=\"processorsadvancedresourcestaskmanager\"></a>\n##### processors\\.advanced\\.resources\\.taskManager: Task manager resource settings\n\nResource settings for Flink task manager pods.\n\n\n**Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|**replicas**<br/>(Task manager replicas)|`integer`|Number of Flink task manager pods to run.<br/>Minimum: `1`<br/>||\n\n**Additional Properties:** not allowed  \n**Minimal Properties:** 1  \n<a name=\"secret-providers\"></a>"
    },
    {
      "id": "secret-providers-secret-providers",
      "title": "secret\\-providers: Secret providers",
      "role": "content",
      "text": "External secret providers used to resolve `${...}` references in the configuration.\n\n\n**Properties** (key: `.*`)\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|**type**<br/>(Provider type)|`string`|Secret provider backend. `aws` uses AWS Secrets Manager; `vault` uses HashiCorp Vault.<br/>Enum: `\"aws\"`, `\"vault\"`<br/>|yes|\n|[**parameters**](#secret-providersparameters)<br/>(Provider parameters)|`object`|Configuration parameters for the secret provider.<br/>|yes|\n\n\n<a name=\"secret-providersparameters\"></a>"
    },
    {
      "id": "secret-providersparameters-provider-parameters",
      "title": "secret\\-providers\\.parameters: Provider parameters",
      "role": "content",
      "text": "Configuration parameters for the secret provider.\n\n\n**Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|[**objects**](#secret-providersparametersobjects)<br/>(Secrets objects array)|`object[]`|Secret objects to fetch from the provider.<br/>|yes|\n\n**Example**\n\n[code example]\n\n<a name=\"secret-providersparametersobjects\"></a>\n#### secret\\-providers\\.parameters\\.objects\\[\\]: Secrets objects array\n\nSecret objects to fetch from the provider.\n\n\n**Items: Secret object**\n\n**No properties.**\n\n**Example**\n\n[code example]\n\n<a name=\"metadata\"></a>"
    },
    {
      "id": "metadata-pipeline-metadata",
      "title": "metadata: Pipeline metadata",
      "role": "content",
      "text": "Optional metadata describing this pipeline, such as a display name and description.\n\n\n**Properties**\n\n|Name|Type|Description|Required|\n|----|----|-----------|--------|\n|**name**<br/>(Pipeline name)|`string`|Human-readable name for the pipeline. Maximum 100 characters.<br/>Maximal Length: `100`<br/>||\n|**description**<br/>(Pipeline description)|`string`|Free-form description of what the pipeline does. Maximum 500 characters.<br/>Maximal Length: `500`<br/>||\n|**revision**<br/>(Pipeline revision)|`integer`|Pipeline revision number. Must be a non-negative integer.<br/>Minimum: `0`<br/>||\n|[**tags**](#metadatatags)<br/>(Pipeline tags)|`string[]`|Array of pipeline tags. Each tag must be a string of up to 50 characters, containing only alphanumeric characters, dots, dashes, or underscores, and must start and end with an alphanumeric character. Tags must be unique.<br/>||\n\n**Additional Properties:** not allowed  \n<a name=\"metadatatags\"></a>"
    },
    {
      "id": "metadatatags-pipeline-tags",
      "title": "metadata\\.tags\\[\\]: Pipeline tags",
      "role": "content",
      "text": "Array of pipeline tags. Each tag must be a string of up to 50 characters, containing only alphanumeric characters, dots, dashes, or underscores, and must start and end with an alphanumeric character. Tags must be unique.\n\n\n**Unique Items:** yes"
    }
  ],
  "examples": [
    {
      "id": "sourcesconnection-source-database-connection-ex0",
      "language": "yaml",
      "code": "SQL database:\n  hr:\n    type: postgresql\n    host: localhost\n    port: 5432\n    database: postgres\n    user: postgres\n    password: postgres\nMongoDB:\n  mongodb-source:\n    type: mongodb\n    connection_string: mongodb://localhost:27017/?replicaSet=rs0\n    user: debezium\n    password: dbz\n    database: db1,db2\nSpanner:\n  spanner-source:\n    type: spanner\n    project_id: example-12345\n    instance_id: example\n    database_id: example\n    change_streams:\n      change_stream_all:\n        retention_period_hours: 24\nSnowflake:\n  snowflake:\n    type: snowflake\n    url: jdbc:snowflake://myaccount.snowflakecomputing.com/\n    user: myuser\n    password: mypassword\n    database: MYDB\n    warehouse: COMPUTE_WH",
      "section_id": "sourcesconnection-source-database-connection"
    },
    {
      "id": "sourcesconnection-source-database-connection-ex1",
      "language": "yaml",
      "code": "hr:\n  type: postgresql\n  host: localhost\n  port: 5432\n  database: postgres\n  user: postgres\n  password: postgres",
      "section_id": "sourcesconnection-source-database-connection"
    },
    {
      "id": "sourcesconnection-source-database-connection-ex2",
      "language": "yaml",
      "code": "my-oracle:\n  type: oracle\n  host: 172.17.0.4\n  port: 1521\n  user: c##dbzuser\n  password: dbz",
      "section_id": "sourcesconnection-source-database-connection"
    },
    {
      "id": "sourcesconnection-source-database-connection-ex3",
      "language": "yaml",
      "code": "mongodb-source:\n  type: mongodb\n  connection_string: mongodb://localhost:27017/?replicaSet=rs0\n  user: debezium\n  password: dbz\n  database: db1,db2",
      "section_id": "sourcesconnection-source-database-connection"
    },
    {
      "id": "sourcesconnection-source-database-connection-ex4",
      "language": "yaml",
      "code": "spanner-source:\n  type: spanner\n  project_id: example-12345\n  instance_id: example\n  database_id: example\n  change_streams:\n    change_stream_all:\n      retention_period_hours: 24",
      "section_id": "sourcesconnection-source-database-connection"
    },
    {
      "id": "sourcesconnection-source-database-connection-ex5",
      "language": "yaml",
      "code": "snowflake:\n  type: snowflake\n  url: jdbc:snowflake://myaccount.snowflakecomputing.com/\n  user: myuser\n  password: mypassword\n  database: MYDB\n  warehouse: COMPUTE_WH",
      "section_id": "sourcesconnection-source-database-connection"
    },
    {
      "id": "sourceslogging-logging-configuration-ex0",
      "language": "yaml",
      "code": "level: info",
      "section_id": "sourceslogging-logging-configuration"
    },
    {
      "id": "sourcesadvanced-advanced-configuration-ex0",
      "language": "yaml",
      "code": "sink:\n  redis.batch.size: 1000\n  redis.flush.interval.ms: 100\n  redis.connection.timeout.ms: 2000\n  redis.socket.timeout.ms: 2000\n  redis.retry.max.attempts: 5\n  redis.retry.initial.delay.ms: 100\n  redis.retry.max.delay.ms: 3000\n  redis.retry.backoff.multiplier: 2\n  redis.oom.retry.initial.delay.ms: 1000\n  redis.oom.retry.max.delay.ms: 10000\n  redis.oom.retry.backoff.multiplier: 2\n  redis.wait.enabled: false\n  redis.wait.timeout.ms: 1000\n  redis.wait.write.timeout.ms: 1000\n  redis.wait.retry.enabled: false\n  redis.wait.retry.delay.ms: 1000\nsource:\n  snapshot.mode: initial\n  snapshot.max.threads: 1\n  poll.interval.ms: 500\n  max.batch.size: 2048\n  max.queue.size: 8192\n  heartbeat.interval.ms: 0\n  database.trustServerCertificate: false\n  driver.applicationIntent: ReadWrite\n  lob.enabled: false\n  publication.autocreate.mode: all_tables\n  publication.name: dbz_publication\n  slot.name: debezium\n  capture.mode: change_streams_update_full\n  capture.mode.full.update.type: lookup\n  cursor.oversize.handling.mode: fail\n  cursor.oversize.skip.threshold: 0\n  mongodb.authsource: admin\n  mongodb.ssl.invalid.hostname.allowed: false\n  mongodb.connect.timeout.ms: 10000\n  mongodb.socket.timeout.ms: 0\n  mongodb.server.selection.timeout.ms: 30000\n  mongodb.heartbeat.frequency.ms: 10000\n  spanner.version.retention.period.hours: 1\n  spanner.fetch.timeout.ms: 500\n  spanner.fetch.heartbeat.ms: 100\n  spanner.max.rows.per.partition: 10000\n  spanner.dialect: GOOGLESQL\nquarkus: {}\nflink:\n  taskmanager.numberOfTaskSlots: 1\nresources: {}\nriotx:\n  poll: 30s\n  snapshot: INITIAL\n  streamPrefix: 'data:'\n  clearOffset: false\n  count: 0\ndiagnostics:\n  heap_dump:\n    enabled: false\n  java_flight_recorder:\n    enabled: false",
      "section_id": "sourcesadvanced-advanced-configuration"
    },
    {
      "id": "sourcesadvanced-advanced-configuration-ex1",
      "language": "yaml",
      "code": "redis.batch.size: 1000\nredis.flush.interval.ms: 100\nredis.connection.timeout.ms: 2000\nredis.socket.timeout.ms: 2000\nredis.retry.max.attempts: 5\nredis.retry.initial.delay.ms: 100\nredis.retry.max.delay.ms: 3000\nredis.retry.backoff.multiplier: 2\nredis.oom.retry.initial.delay.ms: 1000\nredis.oom.retry.max.delay.ms: 10000\nredis.oom.retry.backoff.multiplier: 2\nredis.wait.enabled: false\nredis.wait.timeout.ms: 1000\nredis.wait.write.timeout.ms: 1000\nredis.wait.retry.enabled: false\nredis.wait.retry.delay.ms: 1000",
      "section_id": "sourcesadvanced-advanced-configuration"
    },
    {
      "id": "sourcesadvanced-advanced-configuration-ex2",
      "language": "yaml",
      "code": "snapshot.mode: initial\nsnapshot.max.threads: 1\npoll.interval.ms: 500\nmax.batch.size: 2048\nmax.queue.size: 8192\nheartbeat.interval.ms: 0\ndatabase.trustServerCertificate: false\ndriver.applicationIntent: ReadWrite\nlob.enabled: false\npublication.autocreate.mode: all_tables\npublication.name: dbz_publication\nslot.name: debezium\ncapture.mode: change_streams_update_full\ncapture.mode.full.update.type: lookup\ncursor.oversize.handling.mode: fail\ncursor.oversize.skip.threshold: 0\nmongodb.authsource: admin\nmongodb.ssl.invalid.hostname.allowed: false\nmongodb.connect.timeout.ms: 10000\nmongodb.socket.timeout.ms: 0\nmongodb.server.selection.timeout.ms: 30000\nmongodb.heartbeat.frequency.ms: 10000\nspanner.version.retention.period.hours: 1\nspanner.fetch.timeout.ms: 500\nspanner.fetch.heartbeat.ms: 100\nspanner.max.rows.per.partition: 10000\nspanner.dialect: GOOGLESQL",
      "section_id": "sourcesadvanced-advanced-configuration"
    },
    {
      "id": "sourcesadvanced-advanced-configuration-ex3",
      "language": "yaml",
      "code": "taskmanager.numberOfTaskSlots: 1",
      "section_id": "sourcesadvanced-advanced-configuration"
    },
    {
      "id": "sourcesadvanced-advanced-configuration-ex4",
      "language": "yaml",
      "code": "poll: 30s\nsnapshot: INITIAL\nstreamPrefix: 'data:'\nclearOffset: false\ncount: 0",
      "section_id": "sourcesadvanced-advanced-configuration"
    },
    {
      "id": "sourcesadvanced-advanced-configuration-ex5",
      "language": "yaml",
      "code": "heap_dump:\n  enabled: false\njava_flight_recorder:\n  enabled: false",
      "section_id": "sourcesadvanced-advanced-configuration"
    },
    {
      "id": "sourcesadvanced-advanced-configuration-ex6",
      "language": "yaml",
      "code": "enabled: false",
      "section_id": "sourcesadvanced-advanced-configuration"
    },
    {
      "id": "sourcesadvanced-advanced-configuration-ex7",
      "language": "yaml",
      "code": "enabled: false",
      "section_id": "sourcesadvanced-advanced-configuration"
    },
    {
      "id": "processorslogging-logging-configuration-ex0",
      "language": "yaml",
      "code": "level: info",
      "section_id": "processorslogging-logging-configuration"
    },
    {
      "id": "processorsadvanced-advanced-configuration-ex0",
      "language": "yaml",
      "code": "source:\n  stream.name.pattern: data:*\n  discovery.interval.ms: 1000\n  batch.size: 2000\n  batch.timeout.ms: 100\n  connection.timeout.ms: 2000\n  socket.timeout.ms: 2000\n  retry.max.attempts: 5\n  retry.initial.delay.ms: 100\n  retry.max.delay.ms: 3000\n  retry.backoff.multiplier: 2\ntarget:\n  batch.size: 200\n  flush.interval.ms: 100\n  connection.timeout.ms: 2000\n  socket.timeout.ms: 2000\n  retry.max.attempts: 5\n  retry.initial.delay.ms: 1000\n  retry.max.delay.ms: 10000\n  retry.backoff.multiplier: 2\n  wait.enabled: false\n  wait.write.timeout.ms: 1000\n  wait.retry.enabled: true\n  wait.retry.delay.ms: 1000\ndlq:\n  max.len: 1000\n  batch.size: 100\n  flush.interval.ms: 100\n  connection.timeout.ms: 2000\n  socket.timeout.ms: 2000\n  retry.max.attempts: 1\n  retry.initial.delay.ms: 100\n  retry.max.delay.ms: 3000\n  retry.backoff.multiplier: 2\n  wait.enabled: false\n  wait.write.timeout.ms: 1000\n  wait.retry.enabled: false\n  wait.retry.delay.ms: 1000\nprocessor:\n  default.data.type: hash\n  default.json.update.strategy: replace\n  dlq.enabled: true\nflink:\n  taskmanager.numberOfTaskSlots: 1\n  taskmanager.memory.process.size: 2048m\nresources:\n  taskManager: {}",
      "section_id": "processorsadvanced-advanced-configuration"
    },
    {
      "id": "processorsadvanced-advanced-configuration-ex1",
      "language": "yaml",
      "code": "stream.name.pattern: data:*\ndiscovery.interval.ms: 1000\nbatch.size: 2000\nbatch.timeout.ms: 100\nconnection.timeout.ms: 2000\nsocket.timeout.ms: 2000\nretry.max.attempts: 5\nretry.initial.delay.ms: 100\nretry.max.delay.ms: 3000\nretry.backoff.multiplier: 2",
      "section_id": "processorsadvanced-advanced-configuration"
    },
    {
      "id": "processorsadvanced-advanced-configuration-ex2",
      "language": "yaml",
      "code": "batch.size: 200\nflush.interval.ms: 100\nconnection.timeout.ms: 2000\nsocket.timeout.ms: 2000\nretry.max.attempts: 5\nretry.initial.delay.ms: 1000\nretry.max.delay.ms: 10000\nretry.backoff.multiplier: 2\nwait.enabled: false\nwait.write.timeout.ms: 1000\nwait.retry.enabled: true\nwait.retry.delay.ms: 1000",
      "section_id": "processorsadvanced-advanced-configuration"
    },
    {
      "id": "processorsadvanced-advanced-configuration-ex3",
      "language": "yaml",
      "code": "max.len: 1000\nbatch.size: 100\nflush.interval.ms: 100\nconnection.timeout.ms: 2000\nsocket.timeout.ms: 2000\nretry.max.attempts: 1\nretry.initial.delay.ms: 100\nretry.max.delay.ms: 3000\nretry.backoff.multiplier: 2\nwait.enabled: false\nwait.write.timeout.ms: 1000\nwait.retry.enabled: false\nwait.retry.delay.ms: 1000",
      "section_id": "processorsadvanced-advanced-configuration"
    },
    {
      "id": "processorsadvanced-advanced-configuration-ex4",
      "language": "yaml",
      "code": "default.data.type: hash\ndefault.json.update.strategy: replace\ndlq.enabled: true",
      "section_id": "processorsadvanced-advanced-configuration"
    },
    {
      "id": "processorsadvanced-advanced-configuration-ex5",
      "language": "yaml",
      "code": "taskmanager.numberOfTaskSlots: 1\ntaskmanager.memory.process.size: 2048m",
      "section_id": "processorsadvanced-advanced-configuration"
    },
    {
      "id": "processorsadvanced-advanced-configuration-ex6",
      "language": "yaml",
      "code": "taskManager: {}",
      "section_id": "processorsadvanced-advanced-configuration"
    },
    {
      "id": "secret-providersparameters-provider-parameters-ex0",
      "language": "yaml",
      "code": "objects:\n  - {}",
      "section_id": "secret-providersparameters-provider-parameters"
    },
    {
      "id": "secret-providersparameters-provider-parameters-ex1",
      "language": "yaml",
      "code": "- {}",
      "section_id": "secret-providersparameters-provider-parameters"
    }
  ]
}
