Debezium MongoDB Connector
Capture changes from a MongoDB database.
What’s inside
-
Debezium MongoDB Connector component, URI syntax:
debezium-mongodb:name
Please refer to the above links for usage and configuration details.
Maven coordinates
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-debezium-mongodb-starter</artifactId>
</dependency> Spring Boot Auto-Configuration
The starter supports 106 options, which are listed below.
| Name | Description | Default | Type |
|---|---|---|---|
camel.component.debezium-mongodb.additional-properties | Additional properties for debezium components in case they can’t be set directly on the camel configurations (e.g: setting Kafka Connect properties needed by Debezium engine, for example setting KafkaOffsetBackingStore), the properties have to be prefixed with additionalProperties.. E.g: additionalProperties.transactional.id=12345&additionalProperties.schema.registry.url=http://localhost:8811/avro. This is a multi-value option with prefix: additionalProperties. | Object> | |
camel.component.debezium-mongodb.autowired-enabled | Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc. | true | Boolean |
camel.component.debezium-mongodb.binary-handling-mode | Specify how binary (blob, binary, etc.) columns should be represented in change events, including: 'bytes' represents binary data as byte array (default); 'base64' represents binary data as base64-encoded string; 'base64-url-safe' represents binary data as base64-url-safe-encoded string; 'hex' represents binary data as hex-encoded (base16) string | bytes | String |
camel.component.debezium-mongodb.bridge-error-handler | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions (if possible) occurred while the Camel consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. Important: This is only possible if the 3rd party component allows Camel to be alerted if an exception was thrown. Some components handle this internally only, and therefore bridgeErrorHandler is not possible. In other situations we may improve the Camel component to hook into the 3rd party component and make this possible for future releases. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | Boolean |
camel.component.debezium-mongodb.capture-mode | The method used to capture changes from MongoDB server. Options include: 'change_streams' to capture changes via MongoDB Change Streams, update events do not contain full documents; 'change_streams_update_full' (the default) to capture changes via MongoDB Change Streams, update events contain full documents | change_streams_update_full | String |
camel.component.debezium-mongodb.capture-scope | The scope of captured changes. Options include: 'deployment' (the default) to capture changes from the entire MongoDB deployment; 'database' to capture changes from a specific MongoDB database’collection' to capture changes from a specific MongoDB collection | deployment | String |
camel.component.debezium-mongodb.capture-target | The target to capture changes from. For 'database' scope, this is the database name. For 'collection' scope, this is the collection name as .. | String | |
camel.component.debezium-mongodb.collection-exclude-list | A comma-separated list of regular expressions or literals that match the collection names for which changes are to be excluded | String | |
camel.component.debezium-mongodb.collection-include-list | A comma-separated list of regular expressions or literals that match the collection names for which changes are to be captured | String | |
camel.component.debezium-mongodb.configuration | Allow pre-configured Configurations to be set. The option is a org.apache.camel.component.debezium.mongodb.configuration.MongoDbConnectorEmbeddedDebeziumConfiguration type. | MongoDbConnectorEmbeddedDebeziumConfiguration | |
camel.component.debezium-mongodb.connection-validation-timeout-ms | The maximum time in milliseconds to wait for connection validation to complete. Defaults to 60 seconds. The option is a long type. | 60000 | Long |
camel.component.debezium-mongodb.converters | Optional list of custom converters that would be used instead of default ones. The converters are defined using '.type' config option and configured using options '.' | String | |
camel.component.debezium-mongodb.cursor-max-await-time-ms | The maximum processing time in milliseconds to wait for the oplog cursor to process a single poll request. The option is a int type. | Integer | |
camel.component.debezium-mongodb.custom-metric-tags | A comma-separated list of key-value pairs that are appended to the MBean object name. Keys must be valid JMX ObjectName property keys. For example: k1=v1,k2=v2 | String | |
camel.component.debezium-mongodb.custom-sanitize-pattern | Regular expression identifying configuration keys whose values should be masked. When set, this custom pattern replaces Debeziums default password masking pattern. | \.jaas.config$|.*basic.auth.user.info|.*registry.auth.client-secret|.*credentials.json$|.*connectionstring$|.*connection.string$ | String |
camel.component.debezium-mongodb.database-exclude-list | A comma-separated list of regular expressions or literals that match the database names for which changes are to be excluded | String | |
camel.component.debezium-mongodb.database-include-list | A comma-separated list of regular expressions or literals that match the database names for which changes are to be captured | String | |
camel.component.debezium-mongodb.enabled | Whether to enable auto configuration of the debezium-mongodb component. This is enabled by default. | Boolean | |
camel.component.debezium-mongodb.errors-max-retries | The maximum number of retries on connection errors before failing (-1 = no limit, 0 = disabled, 0 = num of retries). | -1 | Integer |
camel.component.debezium-mongodb.event-converting-failure-handling-mode | Specify how failures during converting of event should be handled, including: 'fail' throw an exception that the column of event conversion is failed with unmatched schema type, causing the connector to be stopped. it could need schema recovery to covert successfully; 'warn' (the default) the value of column of event that conversion failed will be null and be logged with warn level; 'skip' the value of column of event that conversion failed will be null and be logged with debug level. | warn | String |
camel.component.debezium-mongodb.event-processing-failure-handling-mode | Specify how failures during processing of events (i.e. when encountering a corrupted event) should be handled, including: 'fail' (the default) an exception indicating the problematic event and its position is raised, causing the connector to be stopped; 'warn' the problematic event and its position will be logged and the event will be skipped; 'ignore' the problematic event will be skipped. | fail | String |
camel.component.debezium-mongodb.executor-shutdown-timeout-ms | The maximum time in milliseconds to wait for task executor to shut down. The option is a long type. | 4000 | Long |
camel.component.debezium-mongodb.extended-headers-enabled | Enable/Disable Debezium context headers that provides essential metadata for tracking and identifying the source of CDC events in downstream processing systems. | true | Boolean |
camel.component.debezium-mongodb.field-exclude-list | A comma-separated list of the fully-qualified names of fields that should be excluded from change event message values | String | |
camel.component.debezium-mongodb.field-name-adjustment-mode | Specify how field names should be adjusted for compatibility with the message converter used by the connector, including: 'avro' replaces the characters that cannot be used in the Avro type name with underscore; 'avro_unicode' replaces the underscore or characters that cannot be used in the Avro type name with corresponding unicode like _uxxxx. Note: _ is an escape sequence like backslash in Java;'none' does not apply any adjustment (default) | none | String |
camel.component.debezium-mongodb.field-renames | A comma-separated list of the fully-qualified replacements of fields that should be used to rename fields in change event message values. Fully-qualified replacements for fields are of the form databaseName.collectionName.fieldName.nestedFieldName:newNestedFieldName, where databaseName and collectionName may contain the wildcard (*) which matches any characters, the colon character (:) is used to determine rename mapping of field. | String | |
camel.component.debezium-mongodb.guardrail-collections-limit-action | Specify the action to take when a guardrail collections limit is exceeded: 'warn' (the default) logs a warning message and continues processing; 'fail' stops the connector with an error. | warn | String |
camel.component.debezium-mongodb.guardrail-collections-max | The maximum number of collections or tables that can be captured by the connector. When this limit is exceeded, the action specified by 'guardrail.collections.limit.action' will be taken. Set to 0 to disable this guardrail. | 0 | Integer |
camel.component.debezium-mongodb.heartbeat-interval-ms | Length of an interval in milli-seconds in in which the connector periodically sends heartbeat messages to a heartbeat topic. Use 0 to disable heartbeat messages. Disabled by default. The option is a int type. | 0 | Integer |
camel.component.debezium-mongodb.heartbeat-topics-prefix | The prefix that is used to name heartbeat topics.Defaults to __debezium-heartbeat. | __debezium-heartbeat | String |
camel.component.debezium-mongodb.incremental-snapshot-allow-schema-changes | Detect schema change during an incremental snapshot and re-select a current chunk to avoid locking DDLs. Note that changes to a primary key are not supported and can cause incorrect results if performed during an incremental snapshot. Another limitation is that if a schema change affects only columns' default values, then the change won’t be detected until the DDL is processed from the binlog stream. This doesn’t affect the snapshot events' values, but the schema of snapshot events may have outdated defaults. | false | Boolean |
camel.component.debezium-mongodb.incremental-snapshot-chunk-size | The maximum size of chunk (number of documents/rows) for incremental snapshotting | 1024 | Integer |
camel.component.debezium-mongodb.incremental-snapshot-watermarking-strategy | Specify the strategy used for watermarking during an incremental snapshot: 'insert_insert' both open and close signal is written into signal data collection (default); 'insert_delete' only open signal is written on signal data collection, the close will delete the relative open signal; | INSERT_INSERT | String |
camel.component.debezium-mongodb.internal-key-converter | The Converter class that should be used to serialize and deserialize key data for offsets. The default is JSON converter. | org.apache.kafka.connect.json.JsonConverter | String |
camel.component.debezium-mongodb.internal-value-converter | The Converter class that should be used to serialize and deserialize value data for offsets. The default is JSON converter. | org.apache.kafka.connect.json.JsonConverter | String |
camel.component.debezium-mongodb.json-serialization-mode | Controls the Extended JSON serialization mode used for MongoDB event payload fields. Options include: 'legacy' (the default) uses MongoDB Extended JSON v1 strict mode for full document fields and MongoDB Extended JSON v2 relaxed mode for update fields. 'strict' uses MongoDB Extended JSON v1 strict mode. 'extended' uses MongoDB Extended JSON v2 canonical mode. 'relaxed' uses MongoDB Extended JSON v2 relaxed mode. | legacy | String |
camel.component.debezium-mongodb.legacy-snapshot-max-threads | When enabled, uses the legacy table-per-thread parallel snapshot algorithm. When set to false (the default), tables are split into chunks and processed across all snapshot threads, allowing for higher concurrency for snapshots. | false | Boolean |
camel.component.debezium-mongodb.max-batch-size | Maximum size of each batch of source records. Defaults to 2048. | 2048 | Integer |
camel.component.debezium-mongodb.max-queue-size | Maximum size of the queue for change events read from the database log but not yet recorded or forwarded. Defaults to 8192, and should always be larger than the maximum batch size. | 8192 | Integer |
camel.component.debezium-mongodb.max-queue-size-in-bytes | Maximum size of the queue in bytes for change events read from the database log but not yet recorded or forwarded. Defaults to 0. Mean the feature is not enabled | 0 | Long |
camel.component.debezium-mongodb.mongodb-authsource | Database containing user credentials. | admin | String |
camel.component.debezium-mongodb.mongodb-connect-timeout-ms | The connection timeout, given in milliseconds. Defaults to 10 seconds (10,000 ms). The option is a int type. | 10000 | Integer |
camel.component.debezium-mongodb.mongodb-connection-string | Database connection string. | String | |
camel.component.debezium-mongodb.mongodb-heartbeat-frequency-ms | The frequency that the cluster monitor attempts to reach each server. Defaults to 10 seconds (10,000 ms). The option is a int type. | 10000 | Integer |
camel.component.debezium-mongodb.mongodb-password | Password to be used when connecting to MongoDB, if necessary. | String | |
camel.component.debezium-mongodb.mongodb-poll-interval-ms | Interval for looking for new, removed, or changed replica sets, given in milliseconds. Defaults to 30 seconds (30,000 ms). The option is a long type. | 30000 | Long |
camel.component.debezium-mongodb.mongodb-server-selection-timeout-ms | The server selection timeout, given in milliseconds. Defaults to 10 seconds (10,000 ms). The option is a int type. | 30000 | Integer |
camel.component.debezium-mongodb.mongodb-socket-timeout-ms | The socket timeout, given in milliseconds. Defaults to 0 ms. The option is a int type. | 0 | Integer |
camel.component.debezium-mongodb.mongodb-ssl-enabled | Should connector use SSL to connect to MongoDB instances | false | Boolean |
camel.component.debezium-mongodb.mongodb-ssl-invalid-hostname-allowed | Whether invalid host names are allowed when using SSL. If true the connection will not prevent man-in-the-middle attacks | false | Boolean |
camel.component.debezium-mongodb.mongodb-user | Database user for connecting to MongoDB, if necessary. | String | |
camel.component.debezium-mongodb.notification-enabled-channels | List of notification channels names that are enabled. | String | |
camel.component.debezium-mongodb.notification-http-allow-private-networks | When true, the SSRF guard permits notification URLs that resolve to loopback, site-local or link-local addresses (e.g. an in-cluster Service). Defaults to false so only public addresses are allowed. | false | Boolean |
camel.component.debezium-mongodb.notification-http-retries | Number of retries after the first failed HTTP notification delivery attempt. Terminal notifications (COMPLETED/ABORTED/SKIPPED) are always retried at least 3 times. | 2 | Integer |
camel.component.debezium-mongodb.notification-http-timeout-ms | Connect and read timeout, in milliseconds, for HTTP notification delivery. The option is a int type. | 5000 | Integer |
camel.component.debezium-mongodb.notification-http-url | The URL to which notifications are POSTed as JSON. Required when 'http' is in the list of enabled channels. | String | |
camel.component.debezium-mongodb.notification-sink-topic-name | The name of the topic for the notifications. This is required in case 'sink' is in the list of enabled channels | String | |
camel.component.debezium-mongodb.offset-commit-policy | The name of the Java class of the commit policy. It defines when offsets commit has to be triggered based on the number of events processed and the time elapsed since the last commit. This class must implement the interface 'OffsetCommitPolicy'. The default is a periodic commit policy based upon time intervals. | String | |
camel.component.debezium-mongodb.offset-commit-timeout-ms | Maximum number of milliseconds to wait for records to flush and partition offset data to be committed to offset storage before cancelling the process and restoring the offset data to be committed in a future attempt. The default is 5 seconds. The option is a long type. | 5000 | Long |
camel.component.debezium-mongodb.offset-flush-interval-ms | Interval at which to try committing offsets. The default is 1 minute. The option is a long type. | 60000 | Long |
camel.component.debezium-mongodb.offset-storage | The name of the Java class that is responsible for persistence of connector offsets. | org.apache.kafka.connect.storage.FileOffsetBackingStore | String |
camel.component.debezium-mongodb.offset-storage-file-name | Path to file where offsets are to be stored. Required when offset.storage is set to the FileOffsetBackingStore. | String | |
camel.component.debezium-mongodb.offset-storage-partitions | The number of partitions used when creating the offset storage topic. Required when offset.storage is set to the 'KafkaOffsetBackingStore'. | Integer | |
camel.component.debezium-mongodb.offset-storage-replication-factor | Replication factor used when creating the offset storage topic. Required when offset.storage is set to the KafkaOffsetBackingStore | Integer | |
camel.component.debezium-mongodb.offset-storage-topic | The name of the Kafka topic where offsets are to be stored. Required when offset.storage is set to the KafkaOffsetBackingStore. | String | |
camel.component.debezium-mongodb.openlineage-integration-config-file-path | Path to OpenLineage file configuration. See https://openlineage.io/docs/client/java/configuration | ./openlineage.yml | String |
camel.component.debezium-mongodb.openlineage-integration-dataset-kafka-bootstrap-servers | The Kafka bootstrap server address used as input/output namespace/ | String | |
camel.component.debezium-mongodb.openlineage-integration-enabled | Enable Debezium to emit data lineage metadata through OpenLineage API | false | Boolean |
camel.component.debezium-mongodb.openlineage-integration-job-description | The job’s description emitted by Debezium | Debezium change data capture job | String |
camel.component.debezium-mongodb.openlineage-integration-job-namespace | The job’s namespace emitted by Debezium | String | |
camel.component.debezium-mongodb.openlineage-integration-job-owners | The job’s owners emitted by Debezium. A comma-separated list of key-value pairs.For example: k1=v1,k2=v2 | String | |
camel.component.debezium-mongodb.openlineage-integration-job-tags | The job’s tags emitted by Debezium. A comma-separated list of key-value pairs.For example: k1=v1,k2=v2 | String | |
camel.component.debezium-mongodb.poll-interval-ms | Time to wait for new change events to appear after receiving no events, given in milliseconds. Defaults to 500 ms. Values will be capped at 5000 ms. The option is a long type. | 500 | Long |
camel.component.debezium-mongodb.post-processors | Optional list of post processors. The processors are defined using '.type' config option and configured using options '' | String | |
camel.component.debezium-mongodb.provide-transaction-metadata | Enables transaction metadata extraction together with event counting | false | Boolean |
camel.component.debezium-mongodb.query-fetch-size | The maximum number of records that should be loaded into memory while streaming. A value of '0' uses the default JDBC fetch size. | 0 | Integer |
camel.component.debezium-mongodb.retriable-restart-connector-wait-ms | Time to wait before restarting connector after retriable exception occurs. Defaults to 10000ms. The option is a long type. | 10000 | Long |
camel.component.debezium-mongodb.schema-history-internal-file-filename | The path to the file that will be used to record the database schema history | String | |
camel.component.debezium-mongodb.schema-name-adjustment-mode | Specify how schema names should be adjusted for compatibility with the message converter used by the connector, including: 'avro' replaces the characters that cannot be used in the Avro type name with underscore; 'avro_unicode' replaces the underscore or characters that cannot be used in the Avro type name with corresponding unicode like _uxxxx. Note: _ is an escape sequence like backslash in Java;'none' does not apply any adjustment (default) | none | String |
camel.component.debezium-mongodb.signal-data-collection | The name of the data collection that is used to send signals/commands to Debezium. For multi-partition mode connectors, multiple signal data collections can be specified as a comma-separated list. Signaling is disabled when not set. | String | |
camel.component.debezium-mongodb.signal-emit-failure-backoff-ms | Duration to sleep for after encountering an error emitting a window event, given in milliseconds. Defaults to 10 seconds. The option is a long type. | 10000 | Long |
camel.component.debezium-mongodb.signal-emit-failure-max-retries | The maximum number of retries after encountering an error emitting a window event (-1 = no limit, 0 = disabled, 0 = num of retries). Defaults to 0. | 0 | Integer |
camel.component.debezium-mongodb.signal-enabled-channels | List of channels names that are enabled. Source channel is enabled by default | source | String |
camel.component.debezium-mongodb.signal-poll-interval-ms | Interval for looking for new signals in registered channels, given in milliseconds. Defaults to 5 seconds. The option is a long type. | 5000 | Long |
camel.component.debezium-mongodb.skip-messages-without-change | Enable to skip publishing messages when there is no change in included columns.This would essentially filter messages to be sent when there is no change in columns included as per column.include.list/column.exclude.list.For Postgres - this would require REPLICA IDENTITY of table to be FULL. | false | Boolean |
camel.component.debezium-mongodb.skipped-operations | The comma-separated list of operations to skip during streaming, defined as: 'c' for inserts/create; 'u' for updates; 'd' for deletes, 't' for truncates, and 'none' to indicate nothing skipped. By default, only truncate operations will be skipped. | t | String |
camel.component.debezium-mongodb.snapshot-collection-filter-overrides | This property contains a comma-separated list of ., for which the initial snapshot may be a subset of data present in the data source. The subset would be defined by mongodb filter query specified as value for property snapshot.collection.filter.override.. | String | |
camel.component.debezium-mongodb.snapshot-delay-ms | A delay period before a snapshot will begin, given in milliseconds. Defaults to 0 ms. The option is a long type. | 0 | Long |
camel.component.debezium-mongodb.snapshot-fetch-size | The maximum number of records that should be loaded into memory while performing a snapshot. | Integer | |
camel.component.debezium-mongodb.snapshot-include-collection-list | This setting must be set to specify a list of tables/collections whose snapshot must be taken on creating or restarting the connector. | String | |
camel.component.debezium-mongodb.snapshot-max-threads | The maximum number of threads used to perform the snapshot. Defaults to 1. | 1 | Integer |
camel.component.debezium-mongodb.snapshot-max-threads-multiplier | The factor used to scale the number of snapshot chunks per table. The default behavior is to take 'row_count/snapshot.max.threads' to compute the number of rows per chunks. This may not be ideal for larger tables, and using the multiplier, the formula is adjusted to increase the number of chunks by using 'row_count/(snapshot.max.threads * snapshot.max.threads.multiplier). | 1 | Integer |
camel.component.debezium-mongodb.snapshot-mode | The criteria for running a snapshot upon startup of the connector. Select one of the following snapshot options: 'initial' (default): If the connector does not detect any offsets for the logical server name, it runs a snapshot that captures the current full state of the configured tables. After the snapshot completes, the connector begins to stream changes from the oplog. 'never': The connector does not run a snapshot. Upon first startup, the connector immediately begins reading from the beginning of the oplog. | initial | String |
camel.component.debezium-mongodb.snapshot-mode-configuration-based-snapshot-data | When 'snapshot.mode' is set as configuration_based, this setting permits to specify whenever the data should be snapshotted or not. | false | Boolean |
camel.component.debezium-mongodb.snapshot-mode-configuration-based-snapshot-on-data-error | When 'snapshot.mode' is set as configuration_based, this setting permits to specify whenever the data should be snapshotted or not in case of error. | false | Boolean |
camel.component.debezium-mongodb.snapshot-mode-configuration-based-snapshot-on-schema-error | When 'snapshot.mode' is set as configuration_based, this setting permits to specify whenever the schema should be snapshotted or not in case of error. | false | Boolean |
camel.component.debezium-mongodb.snapshot-mode-configuration-based-snapshot-schema | When 'snapshot.mode' is set as configuration_based, this setting permits to specify whenever the schema should be snapshotted or not. | false | Boolean |
camel.component.debezium-mongodb.snapshot-mode-configuration-based-start-stream | When 'snapshot.mode' is set as configuration_based, this setting permits to specify whenever the stream should start or not after snapshot. | false | Boolean |
camel.component.debezium-mongodb.snapshot-mode-custom-name | When 'snapshot.mode' is set as custom, this setting must be set to specify a the name of the custom implementation provided in the 'name()' method. The implementations must implement the 'Snapshotter' interface and is called on each app boot to determine whether to do a snapshot. | String | |
camel.component.debezium-mongodb.sourceinfo-struct-maker | The name of the SourceInfoStructMaker class that returns SourceInfo schema and struct. | io.debezium.connector.mongodb.MongoDbSourceInfoStructMaker | String |
camel.component.debezium-mongodb.statistics-metrics-enabled | Enable to collect various kind of statistics, like latencies in record processing, and derived data like quantiles. By default collecting statistics is enabled. | true | Boolean |
camel.component.debezium-mongodb.streaming-delay-ms | A delay period after the snapshot is completed and the streaming begins, given in milliseconds. Defaults to 0 ms. The option is a long type. | 0 | Long |
camel.component.debezium-mongodb.tombstones-on-delete | Whether delete operations should be represented by a delete event and a subsequent tombstone event (true) or only by a delete event (false). Emitting the tombstone event (the default behavior) allows Kafka to completely delete all events pertaining to the given key once the source record got deleted. | false | Boolean |
camel.component.debezium-mongodb.topic-naming-strategy | The name of the TopicNamingStrategy class that should be used to determine the topic name for data change, schema change, transaction, heartbeat event etc. | io.debezium.schema.SchemaTopicNamingStrategy | String |
camel.component.debezium-mongodb.topic-prefix | Topic prefix that identifies and provides a namespace for the particular database server/cluster is capturing changes. The topic prefix should be unique across all other connectors, since it is used as a prefix for all Kafka topic names that receive events emitted by this connector. Only alphanumeric characters, hyphens, dots and underscores must be accepted. | String | |
camel.component.debezium-mongodb.transaction-metadata-factory | Class to make transaction context & transaction struct/schemas | io.debezium.pipeline.txmetadata.DefaultTransactionMetadataFactory | String |