// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT
= image:kamelets/caffeine-action.svg[] Caffeine Action

*Provided by: "Apache Software Foundation"*

*Support Level for this Kamelet is: "Preview"*

Perform operations on a caffeine cache

The Kamelet expects the following headers to be set:

- `caffeine-key` / `ce-caffeine-key`: as the cache key used in the operation

- `caffeine-operation` / `ce-caffeine-operation`: as the operation to perform. It can be PUT, GET, INVALIDATE and CLEANUP.

If the caffeine-key header won't be set the exchange ID will be used as key.

If the caffeine-operation header won't be set, the GET operation will be performed.

== Configuration Options

The following table summarizes the configuration options available for the `caffeine-action` Kamelet:
[width="100%",cols="2,^2,3,^2,^2,^3",options="header"]
|===
| Property| Name| Description| Type| Default| Example
| *cacheName {empty}* *| Cache name| The name of the cache we want to use| string| `"caffeine-cache"`| 
|===

NOTE: Fields marked with ({empty}*) are mandatory.

== Usage

This section summarizes how the `caffeine-action` can be used in various contexts.

=== Knative Action

The `caffeine-action` Kamelet can be used as intermediate step in a Knative binding.

.caffeine-action-binding.yaml
[source,yaml]
----
apiVersion: camel.apache.org/v1alpha1
kind: KameletBinding
metadata:
  name: caffeine-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: caffeine-action
  sink:
    ref:
      kind: InMemoryChannel
      apiVersion: messaging.knative.dev/v1
      name: mychannel

----
Make sure you have xref:latest@camel-k::installation/installation.adoc[Camel K installed] into the Kubernetes cluster you're connected to.

Save the `caffeine-action-binding.yaml` file into your hard drive, then configure it according to your needs.

You can run the action using the following command:

[source,shell]
----
kubectl apply -f caffeine-action-binding.yaml
----

==== *Dependencies*

The Kamelet needs the following dependencies:


- camel:caffeine
- camel:kamelet 

==== *Binding to Knative using the Kamel CLI:*

The procedure described above can be simplified into a single execution of the `kamel bind` command:

[source,shell]
----
kamel bind timer-source?message=Hello --step caffeine-action channel/mychannel
----

This will create the KameletBinding under the hood and apply it to the current namespace in the cluster.

=== Kafka Action

The `caffeine-action` Kamelet can be used as intermediate step in a Kafka binding.

.caffeine-action-binding.yaml
[source,yaml]
----
apiVersion: camel.apache.org/v1alpha1
kind: KameletBinding
metadata:
  name: caffeine-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: caffeine-action
  sink:
    ref:
      kind: KafkaTopic
      apiVersion: kafka.strimzi.io/v1beta1
      name: my-topic

----

Ensure that you've installed https://strimzi.io/[Strimzi] and created a topic named `my-topic` in the current namespace.
Make also sure you have xref:latest@camel-k::installation/installation.adoc[Camel K installed] into the Kubernetes cluster you're connected to.

Save the `caffeine-action-binding.yaml` file into your hard drive, then configure it according to your needs.

You can run the action using the following command:

[source,shell]
----
kubectl apply -f caffeine-action-binding.yaml
----

==== *Binding to Kafka using the Kamel CLI:*

The procedure described above can be simplified into a single execution of the `kamel bind` command:

[source,shell]
----
kamel bind timer-source?message=Hello --step caffeine-action kafka.strimzi.io/v1beta1:KafkaTopic:my-topic
----

This will create the KameletBinding under the hood and apply it to the current namespace in the cluster.

// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT
