apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: kafka-scram-source annotations: camel.apache.org/kamelet.support.level: "Preview" camel.apache.org/catalog.version: "4.10.2" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1MDAgNTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MDAgNTAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8ZyBpZD0iWE1MSURfMV8iPg0KCTxwYXRoIGlkPSJYTUxJRF85XyIgZD0iTTMxNC44LDI2OS43Yy0xNC4yLDAtMjcsNi4zLTM1LjcsMTYuMkwyNTYuOCwyNzBjMi40LTYuNSwzLjctMTMuNiwzLjctMjAuOWMwLTcuMi0xLjMtMTQuMS0zLjYtMjAuNg0KCQlsMjIuMy0xNS43YzguNyw5LjksMjEuNCwxNi4xLDM1LjYsMTYuMWMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNnMtMjEuMy00Ny42LTQ3LjYtNDcuNnMtNDcuNiwyMS4zLTQ3LjYsNDcuNg0KCQljMCw0LjcsMC43LDkuMiwyLDEzLjVsLTIyLjMsMTUuN2MtOS4zLTExLjYtMjIuOC0xOS42LTM4LjEtMjIuMXYtMjYuOWMyMS42LTQuNSwzNy44LTIzLjcsMzcuOC00Ni42YzAtMjYuMi0yMS4zLTQ3LjYtNDcuNi00Ny42DQoJCWMtMjYuMiwwLTQ3LjYsMjEuMy00Ny42LDQ3LjZjMCwyMi42LDE1LjgsNDEuNSwzNi45LDQ2LjN2MjcuM2MtMjguOCw1LjEtNTAuOCwzMC4yLTUwLjgsNjAuNWMwLDMwLjQsMjIuMiw1NS43LDUxLjIsNjAuNXYyOC44DQoJCWMtMjEuMyw0LjctMzcuNCwyMy43LTM3LjQsNDYuNGMwLDI2LjIsMjEuMyw0Ny42LDQ3LjYsNDcuNmMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNmMwLTIyLjctMTYtNDEuOC0zNy40LTQ2LjR2LTI4LjgNCgkJYzE1LTIuNSwyOC4yLTEwLjQsMzcuNC0yMS44bDIyLjUsMTUuOWMtMS4yLDQuMy0xLjksOC43LTEuOSwxMy40YzAsMjYuMiwyMS4zLDQ3LjYsNDcuNiw0Ny42czQ3LjYtMjEuMyw0Ny42LTQ3LjYNCgkJQzM2Mi40LDI5MSwzNDEuMSwyNjkuNywzMTQuOCwyNjkuN3ogTTMxNC44LDE1OC40YzEyLjcsMCwyMy4xLDEwLjQsMjMuMSwyMy4xYzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xcy0yMy4xLTEwLjQtMjMuMS0yMy4xDQoJCUMyOTEuOCwxNjguOCwzMDIuMSwxNTguNCwzMTQuOCwxNTguNHogTTE3NiwxMTUuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMWMxMi43LDAsMjMuMSwxMC40LDIzLjEsMjMuMQ0KCQljMCwxMi43LTEwLjMsMjMuMS0yMy4xLDIzLjFDMTg2LjMsMTM4LjIsMTc2LDEyNy44LDE3NiwxMTUuMXogTTIyMi4xLDM4NC45YzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xDQoJCWMtMTIuNywwLTIzLjEtMTAuNC0yMy4xLTIzLjFjMC0xMi43LDEwLjMtMjMuMSwyMy4xLTIzLjFDMjExLjgsMzYxLjgsMjIyLjEsMzcyLjIsMjIyLjEsMzg0Ljl6IE0xOTkuMSwyODEuMw0KCQljLTE3LjcsMC0zMi4yLTE0LjQtMzIuMi0zMi4yYzAtMTcuNywxNC40LTMyLjIsMzIuMi0zMi4yYzE3LjcsMCwzMi4yLDE0LjQsMzIuMiwzMi4yQzIzMS4yLDI2Ni45LDIxNi44LDI4MS4zLDE5OS4xLDI4MS4zeg0KCQkgTTMxNC44LDM0MC4zYy0xMi43LDAtMjMuMS0xMC40LTIzLjEtMjMuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMXMyMy4xLDEwLjQsMjMuMSwyMy4xQzMzNy45LDMzMCwzMjcuNSwzNDAuMywzMTQuOCwzNDAuM3oiLz4NCjwvZz4NCjwvc3ZnPg0K" camel.apache.org/provider: "Apache Software Foundation" camel.apache.org/kamelet.group: "Kafka" camel.apache.org/kamelet.namespace: "Kafka" camel.apache.org/keda.type: "kafka" camel.apache.org/keda.authentication.sasl: "scram-sha-512" camel.apache.org/keda.authentication.tls: "enable" labels: camel.apache.org/kamelet.type: "source" spec: definition: title: "Kafka Scram Source" description: |- Receive data from Kafka topics through SCRAM login module. required: - topic - bootstrapServers - user - password type: object properties: topic: title: Topic Names description: Comma separated list of Kafka topic names type: string x-descriptors: - urn:keda:metadata:topic - urn:keda:required bootstrapServers: title: Bootstrap Servers description: Comma separated list of Kafka Broker URLs type: string x-descriptors: - urn:keda:metadata:bootstrapServers - urn:keda:required securityProtocol: title: Security Protocol description: Protocol used to communicate with brokers. SASL_PLAINTEXT, PLAINTEXT, SASL_SSL and SSL are supported type: string default: SASL_SSL saslMechanism: title: SASL Mechanism description: The Simple Authentication and Security Layer (SASL) Mechanism used. type: string default: SCRAM-SHA-512 user: title: Username description: Username to authenticate to Kafka type: string x-descriptors: - urn:camel:group:credentials - urn:keda:authentication:username - urn:keda:required password: title: Password description: Password to authenticate to kafka type: string format: password x-descriptors: - urn:camel:group:credentials - urn:keda:authentication:password - urn:keda:required autoCommitEnable: title: Auto Commit Enable description: If true, periodically commit to ZooKeeper the offset of messages already fetched by the consumer type: boolean default: true allowManualCommit: title: Allow Manual Commit description: Whether to allow doing manual commits type: boolean default: false pollOnError: title: Poll On Error Behavior description: What to do if kafka threw an exception while polling for new messages. There are 5 enums and the value can be one of DISCARD, ERROR_HANDLER, RECONNECT, RETRY, STOP type: string default: "ERROR_HANDLER" autoOffsetReset: title: Auto Offset Reset description: What to do when there is no initial offset. There are 3 enums and the value can be one of latest, earliest, none type: string default: "latest" x-descriptors: - urn:keda:metadata:offsetResetPolicy consumerGroup: title: Consumer Group description: A string that uniquely identifies the group of consumers to which this source belongs type: string example: "my-group-id" x-descriptors: - urn:keda:metadata:consumerGroup - urn:keda:required deserializeHeaders: title: Automatically Deserialize Headers description: When enabled the Kamelet source will deserialize all message headers to String representation. type: boolean default: true topicIsPattern: title: Topic Is Pattern description: Whether the topic is a pattern (regular expression). This can be used to subscribe to dynamic number of topics matching the pattern. type: boolean default: false dependencies: - "camel:core" - "camel:kafka" - "camel:kamelet" template: beans: - name: kafkaHeaderDeserializer type: "#class:org.apache.camel.component.kamelet.utils.serialization.kafka.KafkaHeaderDeserializer" properties: enabled: '{{deserializeHeaders}}' from: uri: "kafka:{{topic}}" parameters: brokers: "{{?bootstrapServers}}" securityProtocol: "{{securityProtocol}}" saslMechanism: "{{saslMechanism}}" saslJaasConfig: 'org.apache.kafka.common.security.scram.ScramLoginModule required username="{{user}}" password="{{password}}";' autoCommitEnable: "{{autoCommitEnable}}" allowManualCommit: "{{allowManualCommit}}" pollOnError: "{{pollOnError}}" autoOffsetReset: "{{autoOffsetReset}}" groupId: "{{?consumerGroup}}" topicIsPattern: "{{topicIsPattern}}" steps: - process: ref: "{{kafkaHeaderDeserializer}}" - to: "kamelet:sink"