pulsar-source/kamelet.json

355 lines
18 KiB
JSON
Raw Permalink Normal View History

2026-10-12 02:36:07 +00:00
{
"apiVersion": "camel.apache.org/v1",
"kind": "Kamelet",
"metadata": {
"name": "pulsar-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,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgdmlld0JveD0iMCAwIDYwLjk3Mzk5OSA0My4wOSIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnMjQiCiAgIHNvZGlwb2RpOmRvY25hbWU9InB1bHNhci1sb2dvLnN2ZyIKICAgd2lkdGg9IjYwLjk3Mzk5OSIKICAgaGVpZ2h0PSI0My4wOSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMS4xLjEgKDNiZjVhZTBkMjUsIDIwMjEtMDktMjApIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6Y2M9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL25zIyIKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9Im5hbWVkdmlldzI2IgogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxLjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VjaGVja2VyYm9hcmQ9IjAiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIHVuaXRzPSJweCIKICAgICBpbmtzY2FwZTp6b29tPSIzLjAwNDM2NjIiCiAgICAgaW5rc2NhcGU6Y3g9IjMxLjQ1NDIyMSIKICAgICBpbmtzY2FwZTpjeT0iNDMuNDM2NzgyIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTkyMCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSIxMDgwIgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ic3ZnMjQiIC8+CiAgPGRlZnMKICAgICBpZD0iZGVmczQiPgogICAgPHN0eWxlCiAgICAgICBpZD0ic3R5bGUyIj4uY2xzLTF7ZmlsbDojMTg4ZmZmO30uY2xzLTJ7ZmlsbDojNDY0ZTU2O308L3N0eWxlPgogICAgPGNsaXBQYXRoCiAgICAgICBjbGlwUGF0aFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgIGlkPSJjbGlwUGF0aDMxNiI+CiAgICAgIDxyZWN0CiAgICAgICAgIGlkPSJyZWN0MzE4IgogICAgICAgICB3aWR0aD0iNjAuOTczOTQ2IgogICAgICAgICBoZWlnaHQ9IjQzLjUxMzExMSIKICAgICAgICAgeD0iNC4wOTY2MDMzZS0xMCIKICAgICAgICAgeT0iLTAuNDIzMTExMTEiIC8+CiAgICA8L2NsaXBQYXRoPgogIDwvZGVmcz4KICA8dGl0bGUKICAgICBpZD0idGl0bGU2Ij5Bc3NldCAyPC90aXRsZT4KICA8ZwogICAgIGlkPSJMYXllcl8yIgogICAgIGRhdGEtbmFtZT0iTGF5ZXIgMiIKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjI5NzE0NDIsMC4wNjg0ODA4NSkiCiAgICAgY2xpcC1wYXRoPSJ1cmwoI2NsaXBQYXRoMzE2KSI+CiAgICA8ZwogICAgICAgaWQ9IkxheWVyXzEtMiIKICAgICAgIGRhdGEtbmFtZT0iTGF5ZXIgMSI+CiAgICAgIDxwYXRoCiAgICAgICAgIGNsYXNzPSJjbHMtMSIKICAgICAgICAgZD0iTSA2MSwxMy43MyBIIDQ2LjA5IEMgNDIuMDYsNiAzNy44LDAgMzIsMCAyNC40NSwwIDIwLjksNi41OSAxNy40NywxMyBsIC0wLjMsMC41NiBIIDAgdiAzLjgxIGggMTAgYyAzLjUzLDAgNC4yNSwxLjE5IDQuMjUsMS4xOSAtMi43Nyw0LjMgLTYuMSw4LjU1IC0xMS42NSw4LjU1IEggMCB2IDQgaCAyLjYyIGMgMTAuNzYsMCAxNS40NiwtOC43MyAxOS4yMywtMTUuNzQgQyAyNS4zMSw4LjkxIDI3LjcyLDUgMzIsNSBjIDQuNDQsMCA5LjExLDkuNjYgMTMuMjIsMTguMTkgMC42LDEuMjQgMS4yMSwyLjUxIDEuODMsMy43NyAtMTUuNzYsMC41IC0yMy4yNyw0LjE5IC0yOS4zOCw3LjIgLTQuNDcsMi4yIC04LDQuOTMgLTEzLjgxLDQuOTMgSCAwIHYgNCBoIDMuODMgYyA3LDAgMTEuMzYsLTIuMTYgMTYsLTQuNDUgNi40MywtMy4xNiAxMy43MiwtNi43NCAzMC45LC02Ljc0IGggOS45MyB2IC00IGggLTUuNjEgYSAzLDMgMCAwIDEgLTIuNDcsLTEgQyA1MS42LDI1IDUwLjY0LDIzIDQ5LjcsMjEgbCAtMS4zLC0yLjY2IGMgMCwwIDAuOTMsLTEgMy41MSwtMSBIIDYxIFoiCiAgICAgICAgIGlkPSJwYXRoOCIgLz4KICAgICAgPHBhdGgKICAgICAgICAgY2xhc3M9ImNscy0yIgogICAgICAgICBkPSJNIDc5LjgzLDEzLjcgSCA2OS40NCB2IDMuNzQgSCA3OS42IGMgNC4yLDAgNi42MSwxLjkxIDYuNjEsNS4zMyAwLDMuMjQgLTIuNjYsNS4zMyAtNi43Nyw1LjMzIGggLTEwIHYgMTMgaCA0IHYgLTkuMyBoIDUuOTMgYyA1LjQyLDAgMTAuODgsLTIuODMgMTAuODgsLTkuMjIgLTAuMDMsLTUuNCAtNC4xMSwtOC44OCAtMTAuNDIsLTguODggeiIKICAgICAgICAgaWQ9InBhdGgxMCIgLz4KICAgICAgPHBhdGgKICAgICAgICAgY2xhc3M9ImNscy0yIgogICAgICAgICBkPSJtIDExMy4zMSwyOS41NyBjIDAsNS4zMSAtMi42Niw4LjI0IC03LjQ4LDguMjQgLTQuODIsMCAtNy42LC0zLjA3IC03LjYsLTguNDMgViAxMy43IGggLTQgdiAxNS44NyBjIDAsNy4zOSA0LjQsMTIgMTEuNDksMTIgNy4wOSwwIDExLjU2LC00LjU3IDExLjU2LC0xMi4yMyBWIDEzLjcgaCAtNCB6IgogICAgICAgICBpZD0icGF0aDEyIiAvPgogICAgICA8cG9seWdvbgogICAgICAgICBjbGFzcz0iY2xzLTIiCiAgICAgICAgIHBvaW50cz0iMTQyLjIyLDQxLjE0IDE0Mi4yMiwzNy4zOSAxMjcuMzMsMzcuMzkgMTI3LjMzLDEzLjcgMTIzLjM2LDEzLjcgMTIzLjM2LDQxLjE0ICIKICAgICAgICAgaWQ9InBvbHlnb24xNCIgL
"camel.apache.org/provider": "Apache Software Foundation",
"camel.apache.org/kamelet.group": "Pulsar",
"camel.apache.org/kamelet.namespace": "Messaging"
},
"labels": {
"camel.apache.org/kamelet.type": "source"
}
},
"spec": {
"dependencies": [
"camel:pulsar",
"camel:kamelet",
"camel:core"
],
"definition": {
"title": "Pulsar Source",
"description": "Receive data from Pulsar topics.",
"required": [
"topicType",
"topic",
"namespaceName",
"tenant",
"serviceUrl"
],
"properties": {
"topic": {
"title": "Topic Name",
"description": "The topic name or regexp",
"type": "string"
},
"tenant": {
"title": "Tenant Name",
"description": "The Tenant Name",
"type": "string"
},
"topicType": {
"title": "Topic Type",
"description": "The topic type.",
"type": "string",
"enum": [
"persistent",
"non-persistent"
]
},
"namespaceName": {
"title": "Pulsar Namespace Name",
"description": "The Pulsar Namespace Name",
"type": "string"
},
"serviceUrl": {
"title": "Service URL",
"description": "The Pulsar Service URL to point while creating the client from URI.",
"type": "string"
},
"authenticationClass": {
"title": "Authentication Class",
"description": "The Authentication FQCN to be used while creating the client from URI.",
"type": "string"
},
"authenticationParams": {
"title": "Authentication Params",
"description": "The Authentication Parameters to be used while creating the client from URI.",
"type": "string"
},
"consumerNamePrefix": {
"title": "Consumer Name Prefix",
"description": "Prefix to add to consumer names when a SHARED or FAILOVER subscription is used",
"type": "string",
"default": "cons"
},
"consumerQueueSize": {
"title": "Consumer Queue Size",
"description": "Size of the consumer queue",
"type": "integer",
"default": 10
},
"deadLetterTopic": {
"title": "Dead Letter Topic",
"description": "Name of the topic where the messages which fail `maxRedeliverCount` times are sent. Note: if not set, default topic name is topicName-subscriptionName-DLQ.",
"type": "integer"
},
"maxRedeliverCount": {
"title": "Maximum Redelivery Count",
"description": "Maximum number of times that a message is redelivered before being sent to the dead letter queue. If this value is not set, no Dead Letter Policy is created.",
"type": "integer"
},
"negativeAckRedeliveryDelayMicros": {
"title": "Negative Ack Redelivery Delay in Microseconds",
"description": "Set the negative acknowledgement delay.",
"type": "integer",
"default": 60000000
},
"messageListener": {
"title": "Message Listener",
"description": "Whether to use the messageListener interface, or to receive messages using a separate thread pool.",
"type": "boolean",
"default": true
},
"numberOfConsumers": {
"title": "Number Of Consumers",
"description": "Number of consumers.",
"type": "integer",
"default": 1
},
"numberOfConsumerThreads": {
"title": "Number Of Consumer Threads",
"description": "Number of threads to receive and handle messages when using a separate thread pool.",
"type": "integer",
"default": 1
},
"readCompacted": {
"title": "Read Compacted",
"description": "Enable compacted topic reading.",
"type": "boolean",
"default": false
},
"subscriptionInitialPosition": {
"title": "Subscription Initial Position",
"description": "Control the initial position in the topic of a newly created subscription. Default is latest message.",
"type": "string",
"default": "LATEST",
"enum": [
"EARLIEST",
"LATEST"
]
},
"subscriptionName": {
"title": "Subscription Name",
"description": "Name of the subscription to use.",
"type": "string",
"default": "subs"
},
"subscriptionTopicsMode": {
"title": "Subscription Topics Mode",
"description": "Determines to which topics this consumer should be subscribed to - Persistent, Non-Persistent, or both. Only used with pattern subscriptions.",
"type": "string",
"default": "PersistentOnly",
"enum": [
"PersistentOnly",
"NonPersistentOnly",
"AllTopics"
]
},
"subscriptionType": {
"title": "Subscription Type",
"description": "Type of the subscription.",
"type": "string",
"default": "EXCLUSIVE",
"enum": [
"EXCLUSIVE",
"SHARED",
"FAILOVER",
"KEY_SHARED"
]
},
"topicsPattern": {
"title": "Topic Pattern",
"description": "Whether the topic is a pattern (regular expression) that allows the consumer to subscribe to all matching topics in the namespace.",
"type": "boolean",
"default": false
}
},
"type": "object"
},
"template": {
"from": {
"uri": "pulsar:{{topicType}}/{{tenant}}/{{namespaceName}}/{{topic}}",
"parameters": {
"serviceUrl": "{{serviceUrl}}",
"authenticationClass": "{{?authenticationClass}}",
"authenticationParams": "{{?authenticationParams}}",
"consumerNamePrefix": "{{?consumerNamePrefix}}",
"consumerQueueSize": "{{?consumerQueueSize}}",
"deadLetterTopic": "{{?deadLetterTopic}}",
"maxRedeliverCount": "{{?maxRedeliverCount}}",
"negativeAckRedeliveryDelayMicros": "{{?negativeAckRedeliveryDelayMicros}}",
"messageListener": "{{?messageListener}}",
"numberOfConsumers": "{{?numberOfConsumers}}",
"numberOfConsumerThreads": "{{?numberOfConsumerThreads}}",
"readCompacted": "{{?readCompacted}}",
"subscriptionInitialPosition": "{{?subscriptionInitialPosition}}",
"subscriptionName": "{{?subscriptionName}}",
"subscriptionTopicsMode": "{{?subscriptionTopicsMode}}",
"subscriptionType": "{{?subscriptionType}}",
"topicsPattern": "{{?topicsPattern}}"
},
"steps": [
{
"to": "kamelet:sink"
}
]
}
}
},
"propertiesSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"title": "Pulsar Source",
"description": "Receive data from Pulsar topics.",
"required": [
"topicType",
"topic",
"namespaceName",
"tenant",
"serviceUrl"
],
"properties": {
"topic": {
"type": "string",
"title": "Topic Name",
"description": "The topic name or regexp"
},
"tenant": {
"type": "string",
"title": "Tenant Name",
"description": "The Tenant Name"
},
"topicType": {
"type": "string",
"title": "Topic Type",
"description": "The topic type.",
"enum": [
"persistent",
"non-persistent"
]
},
"namespaceName": {
"type": "string",
"title": "Pulsar Namespace Name",
"description": "The Pulsar Namespace Name"
},
"serviceUrl": {
"type": "string",
"title": "Service URL",
"description": "The Pulsar Service URL to point while creating the client from URI."
},
"authenticationClass": {
"type": "string",
"title": "Authentication Class",
"description": "The Authentication FQCN to be used while creating the client from URI."
},
"authenticationParams": {
"type": "string",
"title": "Authentication Params",
"description": "The Authentication Parameters to be used while creating the client from URI."
},
"consumerNamePrefix": {
"type": "string",
"title": "Consumer Name Prefix",
"description": "Prefix to add to consumer names when a SHARED or FAILOVER subscription is used",
"default": "cons"
},
"consumerQueueSize": {
"type": "integer",
"title": "Consumer Queue Size",
"description": "Size of the consumer queue",
"default": 10
},
"deadLetterTopic": {
"type": "integer",
"title": "Dead Letter Topic",
"description": "Name of the topic where the messages which fail `maxRedeliverCount` times are sent. Note: if not set, default topic name is topicName-subscriptionName-DLQ."
},
"maxRedeliverCount": {
"type": "integer",
"title": "Maximum Redelivery Count",
"description": "Maximum number of times that a message is redelivered before being sent to the dead letter queue. If this value is not set, no Dead Letter Policy is created."
},
"negativeAckRedeliveryDelayMicros": {
"type": "integer",
"title": "Negative Ack Redelivery Delay in Microseconds",
"description": "Set the negative acknowledgement delay.",
"default": 60000000
},
"messageListener": {
"type": "boolean",
"title": "Message Listener",
"description": "Whether to use the messageListener interface, or to receive messages using a separate thread pool.",
"default": true
},
"numberOfConsumers": {
"type": "integer",
"title": "Number Of Consumers",
"description": "Number of consumers.",
"default": 1
},
"numberOfConsumerThreads": {
"type": "integer",
"title": "Number Of Consumer Threads",
"description": "Number of threads to receive and handle messages when using a separate thread pool.",
"default": 1
},
"readCompacted": {
"type": "boolean",
"title": "Read Compacted",
"description": "Enable compacted topic reading.",
"default": false
},
"subscriptionInitialPosition": {
"type": "string",
"title": "Subscription Initial Position",
"description": "Control the initial position in the topic of a newly created subscription. Default is latest message.",
"enum": [
"EARLIEST",
"LATEST"
],
"default": "LATEST"
},
"subscriptionName": {
"type": "string",
"title": "Subscription Name",
"description": "Name of the subscription to use.",
"default": "subs"
},
"subscriptionTopicsMode": {
"type": "string",
"title": "Subscription Topics Mode",
"description": "Determines to which topics this consumer should be subscribed to - Persistent, Non-Persistent, or both. Only used with pattern subscriptions.",
"enum": [
"PersistentOnly",
"NonPersistentOnly",
"AllTopics"
],
"default": "PersistentOnly"
},
"subscriptionType": {
"type": "string",
"title": "Subscription Type",
"description": "Type of the subscription.",
"enum": [
"EXCLUSIVE",
"SHARED",
"FAILOVER",
"KEY_SHARED"
],
"default": "EXCLUSIVE"
},
"topicsPattern": {
"type": "boolean",
"title": "Topic Pattern",
"description": "Whether the topic is a pattern (regular expression) that allows the consumer to subscribe to all matching topics in the namespace.",
"default": false
}
}
}
}