From 91e272ff6b604e4652b123ce7a10cd76c68dcf3c Mon Sep 17 00:00:00 2001 From: gitea_admin Date: Mon, 12 Oct 2026 02:35:27 +0000 Subject: [PATCH] Add kamelet definition: mongodb-changes-stream-source --- kamelet.json | 182 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 182 insertions(+) create mode 100644 kamelet.json diff --git a/kamelet.json b/kamelet.json new file mode 100644 index 0000000..d2a8499 --- /dev/null +++ b/kamelet.json @@ -0,0 +1,182 @@ +{ + "apiVersion": "camel.apache.org/v1", + "kind": "Kamelet", + "metadata": { + "name": "mongodb-changes-stream-source", + "annotations": { + "camel.apache.org/kamelet.support.level": "Stable", + "camel.apache.org/catalog.version": "4.22.1", + "camel.apache.org/kamelet.icon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMzEgNjciIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9IjEiIHk9IjEiLz48c3ltYm9sIGlkPSJBIiBvdmVyZmxvdz0idmlzaWJsZSI+PGcgc3Ryb2tlPSJub25lIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjxwYXRoIGQ9Ik0xNC4xNzQuMTc1bDEuNzA4IDMuMjA4Yy4zNzEuNTc5LjgwNCAxLjExNyAxLjI5IDEuNjA0IDEuNDMgMS40MyAyLjc4OCAyLjkyOCA0LjAwOCA0LjUzMiAyLjg5NCAzLjggNC44NDYgOCA2LjI0IDEyLjU4NGEzMC45NCAzMC45NCAwIDAgMSAxLjMyNCA4LjU0Yy4xNCA4LjY0Ni0yLjgyNCAxNi4wNy04LjggMjIuMjQtLjk3Mi45NzgtMi4wMjIgMS44NzYtMy4xNCAyLjY4NC0uNTkyIDAtLjg3Mi0uNDU0LTEuMTE2LS44NzItLjQ1NC0uNzY2LS43MzItMS42NC0uODcyLTIuNTEtLjIxLTEuMDQ2LS4zNDgtMi4wOTItLjI4LTMuMTcydi0uNDg4Yy0uMDQ4LS4xMjQtLjU3LTQ4LjEyNC0uMzYyLTQ4LjM1eiIgZmlsbD0iIzU5OTYzNiIvPjxwYXRoIGQ9Ik0xNC4xNzQuMDY5Yy0uMDctLjE0LS4xNC0uMDM0LS4yMS4wMzQuMDM0LjctLjIxIDEuMzI0LS41OTIgMS45Mi0uNC41OTItLjk3NiAxLjA0Ni0xLjUzNCAxLjUzNC0zLjEgMi42ODQtNS41NCA1LjkyNi03LjQ5NCA5LjU1Mi0yLjYgNC44OC0zLjk0IDEwLjExLTQuMzIgMTUuNjE2LS4xNzQgMS45ODYuNjI4IDguOTk0IDEuMjU0IDExLjAxNiAxLjcwOCA1LjM2OCA0Ljc3NiA5Ljg2NiA4Ljc1IDEzLjc3YTM1LjA4IDM1LjA4IDAgMCAwIDMuMSAyLjY1Yy4zMTQgMCAuMzQ4LS4yOC40LS40ODhhOS41NyA5LjU3IDAgMCAwIC4zMTQtMS4zNmwuNy01LjIyOEwxNC4xNzQuMDY5eiIgZmlsbD0iIzZjYWM0OCIvPjxwYXRoIGQ9Ik0xNS44ODIgNTcuNjkxYy4wNy0uOC40NTQtMS40NjQuODcyLTIuMTI2LS40LS4xNzQtLjczMi0uNTItLjk3Ni0uOTA2YTYuNDcgNi40NyAwIDAgMS0uNTItMS4xNWMtLjQ4OC0xLjQ2NC0uNTkyLTMtLjczMi00LjQ5NnYtLjkwNmMtLjE3NC4xNC0uMjEgMS4zMjQtLjIxIDEuNS0uMTAyIDEuNTgxLS4zMTIgMy4xNTQtLjYyOCA0LjcwNi0uMTA0LjYyOC0uMTc0IDEuMjU0LS41NiAxLjgxMiAwIC4wNyAwIC4xNC4wMzQuMjQ0LjYyOCAxLjg0OC44IDMuNzMuOTA2IDUuNjQ4di43YzAgLjgzNi0uMDM0LjY2LjY2Ljk0LjI4LjEwNC41OTIuMTQuODcyLjM0OC4yMSAwIC4yNDQtLjE3NC4yNDQtLjMxNGwtLjEwNC0xLjE1di0zLjIwOGMtLjAzNC0uNTYuMDctMS4xMTYuMTQtMS42NHoiIGZpbGw9IiNjMmJmYmYiLz48L2c+PC9zeW1ib2w+PC9zdmc+", + "camel.apache.org/provider": "Apache Software Foundation", + "camel.apache.org/kamelet.group": "MongoDB", + "camel.apache.org/kamelet.namespace": "Nosql" + }, + "labels": { + "camel.apache.org/kamelet.type": "source" + } + }, + "spec": { + "definition": { + "title": "MongoDB Changes Stream Source", + "description": "Consume Changes from MongoDB Collection in streaming mode.", + "required": [ + "hosts", + "collection", + "database" + ], + "type": "object", + "properties": { + "hosts": { + "title": "MongoDB Hosts", + "description": "Comma separated list of MongoDB Host Addresses in host:port format.", + "type": "string" + }, + "collection": { + "title": "MongoDB Collection", + "description": "Sets the name of the MongoDB collection to bind to this endpoint.", + "type": "string" + }, + "password": { + "title": "MongoDB Password", + "description": "User password for accessing MongoDB.", + "type": "string", + "format": "password", + "x-descriptors": [ + "urn:camel:group:credentials" + ] + }, + "username": { + "title": "MongoDB Username", + "description": "Username for accessing MongoDB. The username must be present in the MongoDB's authentication database (authenticationDatabase). By default, the MongoDB authenticationDatabase is 'admin'.", + "type": "string", + "x-descriptors": [ + "urn:camel:group:credentials" + ] + }, + "ssl": { + "title": "Enable Ssl for Mongodb Connection", + "description": "whether to enable ssl connection to mongodb", + "type": "boolean", + "default": true + }, + "sslValidationEnabled": { + "title": "Enables Ssl Certificates Validation and Host name checks.", + "description": "IMPORTANT this should be disabled only in test environment since can pose security issues.", + "type": "boolean", + "default": true + }, + "database": { + "title": "MongoDB Database", + "description": "Sets the name of the MongoDB database to target.", + "type": "string" + }, + "streamFilter": { + "title": "Stream Filter", + "description": "Filter condition for change streams consumer.", + "type": "string", + "example": "{ '$match':{'$or':[{'fullDocument.stringValue': 'specificValue'}]} }" + } + } + }, + "dependencies": [ + "camel:kamelet", + "camel:mongodb", + "camel:jackson" + ], + "template": { + "beans": [ + { + "name": "local-mongodb", + "type": "#class:org.apache.camel.component.mongodb.MongoDbComponent" + }, + { + "name": "mongo-client", + "type": "#class:org.apache.camel.component.mongodb.SslAwareMongoClient", + "properties": { + "password": "{{?password}}", + "username": "{{?username}}", + "hosts": "{{hosts}}", + "ssl": "{{ssl}}", + "sslValidationEnabled": "{{sslValidationEnabled}}" + } + } + ], + "from": { + "uri": "{{local-mongodb}}:test", + "parameters": { + "collection": "{{collection}}", + "database": "{{database}}", + "consumerType": "changeStreams", + "streamFilter": "{{?streamFilter}}", + "mongoConnection": "#{{mongo-client}}" + }, + "steps": [ + { + "marshal": { + "json": {} + } + }, + { + "to": "kamelet:sink" + } + ] + } + } + }, + "propertiesSchema": { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "title": "MongoDB Changes Stream Source", + "description": "Consume Changes from MongoDB Collection in streaming mode.", + "required": [ + "hosts", + "collection", + "database" + ], + "properties": { + "hosts": { + "type": "string", + "title": "MongoDB Hosts", + "description": "Comma separated list of MongoDB Host Addresses in host:port format." + }, + "collection": { + "type": "string", + "title": "MongoDB Collection", + "description": "Sets the name of the MongoDB collection to bind to this endpoint." + }, + "password": { + "type": "string", + "title": "MongoDB Password", + "description": "User password for accessing MongoDB.", + "format": "password" + }, + "username": { + "type": "string", + "title": "MongoDB Username", + "description": "Username for accessing MongoDB. The username must be present in the MongoDB's authentication database (authenticationDatabase). By default, the MongoDB authenticationDatabase is 'admin'." + }, + "ssl": { + "type": "boolean", + "title": "Enable Ssl for Mongodb Connection", + "description": "whether to enable ssl connection to mongodb", + "default": true + }, + "sslValidationEnabled": { + "type": "boolean", + "title": "Enables Ssl Certificates Validation and Host name checks.", + "description": "IMPORTANT this should be disabled only in test environment since can pose security issues.", + "default": true + }, + "database": { + "type": "string", + "title": "MongoDB Database", + "description": "Sets the name of the MongoDB database to target." + }, + "streamFilter": { + "type": "string", + "title": "Stream Filter", + "description": "Filter condition for change streams consumer." + } + } + } +} \ No newline at end of file