You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2021/11/19 09:18:46 UTC

[camel-kamelets] 04/07: Added Throttle Action Kamelet

This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch throttle-action
in repository https://gitbox.apache.org/repos/asf/camel-kamelets.git

commit 9b621c134678cbf6be65055a4f1001446f0aa7fa
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Fri Nov 19 09:50:43 2021 +0100

    Added Throttle Action Kamelet
---
 .../assets/images/kamelets/throttle-action.svg     |  59 ++++++++
 docs/modules/ROOT/pages/throttle-action.adoc       | 161 +++++++++++++++++++++
 .../bindings/camel-k/throttle-action-binding.yaml  |  24 +++
 .../bindings/core/throttle-action-binding.yaml     |  13 ++
 4 files changed, 257 insertions(+)

diff --git a/docs/modules/ROOT/assets/images/kamelets/throttle-action.svg b/docs/modules/ROOT/assets/images/kamelets/throttle-action.svg
new file mode 100644
index 0000000..fa06352
--- /dev/null
+++ b/docs/modules/ROOT/assets/images/kamelets/throttle-action.svg
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   viewBox="0 -256 1792 1792"
+   id="svg3025"
+   version="1.1"
+   inkscape:version="0.48.3.1 r9886"
+   width="100%"
+   height="100%"
+   sodipodi:docname="cog_font_awesome.svg">
+  <metadata
+     id="metadata3035">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs3033" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="640"
+     inkscape:window-height="480"
+     id="namedview3031"
+     showgrid="false"
+     inkscape:zoom="0.13169643"
+     inkscape:cx="896"
+     inkscape:cy="896"
+     inkscape:window-x="0"
+     inkscape:window-y="25"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg3025" />
+  <g
+     transform="matrix(1,0,0,-1,121.49153,1285.4237)"
+     id="g3027">
+    <path
+       d="m 1024,640 q 0,106 -75,181 -75,75 -181,75 -106,0 -181,-75 -75,-75 -75,-181 0,-106 75,-181 75,-75 181,-75 106,0 181,75 75,75 75,181 z m 512,109 V 527 q 0,-12 -8,-23 -8,-11 -20,-13 l -185,-28 q -19,-54 -39,-91 35,-50 107,-138 10,-12 10,-25 0,-13 -9,-23 -27,-37 -99,-108 -72,-71 -94,-71 -12,0 -26,9 l -138,108 q -44,-23 -91,-38 -16,-136 -29,-186 -7,-28 -36,-28 H 657 q -14,0 -24.5,8.5 Q 622,-111 621,-98 L 593,86 q -49,16 -90,37 L 362,16 Q 352,7 337,7 323,7 312,18 186,132 147,186 q -7 [...]
+       id="path3029"
+       inkscape:connector-curvature="0"
+       style="fill:currentColor" />
+  </g>
+</svg>
diff --git a/docs/modules/ROOT/pages/throttle-action.adoc b/docs/modules/ROOT/pages/throttle-action.adoc
new file mode 100644
index 0000000..3addab2
--- /dev/null
+++ b/docs/modules/ROOT/pages/throttle-action.adoc
@@ -0,0 +1,161 @@
+// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT
+
+= image:kamelets/throttle-action.svg[] Throttle Action
+
+*Provided by: "Apache Software Foundation"*
+
+*Support Level for this Kamelet is: "Preview"*
+
+The Throttl action allows to ensure that a specific sink does not get overloaded.
+
+== Configuration Options
+
+The following table summarizes the configuration options available for the `throttle-action` Kamelet:
+[width="100%",cols="2,^2,3,^2,^2,^3",options="header"]
+|===
+| Property| Name| Description| Type| Default| Example
+| *messages {empty}* *| Messages Number| The number of messages to send in the time period set| int| | `10`
+| *timePeriod {empty}* *| Time Period| Sets the time period during which the maximum request count is valid for, in milliseconds| string| `"1000"`| 
+|===
+
+NOTE: Fields marked with an asterisk ({empty}*) are mandatory.
+
+
+== Dependencies
+
+At runtime, the `throttle-action` Kamelet relies upon the presence of the following dependencies:
+
+- camel:core
+- camel:kamelet 
+
+== Usage
+
+This section describes how you can use the `throttle-action`.
+
+=== Knative Action
+
+You can use the `throttle-action` Kamelet as an intermediate step in a Knative binding.
+
+.throttle-action-binding.yaml
+[source,yaml]
+----
+apiVersion: camel.apache.org/v1alpha1
+kind: KameletBinding
+metadata:
+  name: throttle-action-binding
+spec:
+  source:
+    ref:
+      kind: Kamelet
+      apiVersion: camel.apache.org/v1alpha1
+      name: timer-source
+    properties:
+      message: "Hello"
+  steps:
+  - ref:
+      kind: Kamelet
+      apiVersion: camel.apache.org/v1alpha1
+      name: throttle-action
+    properties:
+      messages: 10
+  sink:
+    ref:
+      kind: Channel
+      apiVersion: messaging.knative.dev/v1
+      name: mychannel
+
+----
+
+==== *Prerequisite*
+
+You have xref:{camel-k-version}@camel-k::installation/installation.adoc[Camel K installed] on the cluster.
+
+==== *Procedure for using the cluster CLI*
+
+. Save the `throttle-action-binding.yaml` file to your local drive, and then edit it as needed for your configuration.
+
+. Run the action by using the following command:
++
+[source,shell]
+----
+kubectl apply -f throttle-action-binding.yaml
+----
+
+==== *Procedure for using the Kamel CLI*
+
+Configure and run the action by using the following command:
+
+[source,shell]
+----
+kamel bind timer-source?message=Hello --step throttle-action -p step-0.messages=10 channel:mychannel
+----
+
+This command creates the KameletBinding in the current namespace on the cluster.
+
+=== Kafka Action
+
+You can use the `throttle-action` Kamelet as an intermediate step in a Kafka binding.
+
+.throttle-action-binding.yaml
+[source,yaml]
+----
+apiVersion: camel.apache.org/v1alpha1
+kind: KameletBinding
+metadata:
+  name: throttle-action-binding
+spec:
+  source:
+    ref:
+      kind: Kamelet
+      apiVersion: camel.apache.org/v1alpha1
+      name: timer-source
+    properties:
+      message: "Hello"
+  steps:
+  - ref:
+      kind: Kamelet
+      apiVersion: camel.apache.org/v1alpha1
+      name: throttle-action
+    properties:
+      messages: 10
+  sink:
+    ref:
+      kind: KafkaTopic
+      apiVersion: kafka.strimzi.io/v1beta1
+      name: my-topic
+
+----
+
+==== *Prerequisites*
+
+* You've installed https://strimzi.io/[Strimzi].
+* You've created a topic named `my-topic` in the current namespace.
+* You have xref:{camel-k-version}@camel-k::installation/installation.adoc[Camel K installed] on the cluster.
+
+==== *Procedure for using the cluster CLI*
+
+. Save the `throttle-action-binding.yaml` file to your local drive, and then edit it as needed for your configuration.
+
+. Run the action by using the following command:
++
+[source,shell]
+----
+kubectl apply -f throttle-action-binding.yaml
+----
+
+==== *Procedure for using the Kamel CLI*
+
+Configure and run the action by using the following command:
+
+[source,shell]
+----
+kamel bind timer-source?message=Hello --step throttle-action -p step-0.messages=10 kafka.strimzi.io/v1beta1:KafkaTopic:my-topic
+----
+
+This command creates the KameletBinding in the current namespace on the cluster.
+
+== Kamelet source file
+
+https://github.com/apache/camel-kamelets/blob/main/throttle-action.kamelet.yaml
+
+// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT
diff --git a/templates/bindings/camel-k/throttle-action-binding.yaml b/templates/bindings/camel-k/throttle-action-binding.yaml
new file mode 100644
index 0000000..d1d704d
--- /dev/null
+++ b/templates/bindings/camel-k/throttle-action-binding.yaml
@@ -0,0 +1,24 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: KameletBinding
+metadata:
+  name: throttle-action-binding
+spec:
+  source:
+    ref:
+      kind: Kamelet
+      apiVersion: camel.apache.org/v1alpha1
+      name: timer-source
+    properties:
+      message: "Hello"
+  steps:
+  - ref:
+      kind: Kamelet
+      apiVersion: camel.apache.org/v1alpha1
+      name: throttle-action
+    properties:
+      messages: 10
+  sink:
+    ref:
+      kind: KafkaTopic
+      apiVersion: kafka.strimzi.io/v1beta1
+      name: my-topic
diff --git a/templates/bindings/core/throttle-action-binding.yaml b/templates/bindings/core/throttle-action-binding.yaml
new file mode 100644
index 0000000..cd4f487
--- /dev/null
+++ b/templates/bindings/core/throttle-action-binding.yaml
@@ -0,0 +1,13 @@
+- route:
+    from:
+      uri: "kamelet:timer-source"
+      parameters:
+        period: 1000
+        message: "{ \"foo\": \"John\"}"
+    steps:
+      - to:
+          uri: "kamelet:throttle-action"
+          parameters:
+            messages: 10
+      - to:
+          uri: "log:info"