// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT
= image:kamelets/header-matches-filter-action.svg[] Header Matches Filter Action

*Provided by: "Apache Software Foundation"*

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

Filter based on header value compared to regex

== Configuration Options

The following table summarizes the configuration options available for the `header-matches-filter-action` Kamelet:
[width="100%",cols="2,^2,3,^2,^2,^3",options="header"]
|===
| Property| Name| Description| Type| Default| Example
| *regex {empty}* *| Regex| The Regex to Evaluate against the Kafka topic name| string| | 
| headerName| Header Name| The header name to get the value to compare| string| | `"headerName"`
|===

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

== Usage

This section summarizes how the `header-matches-filter-action` can be used in various contexts.

=== Knative Action

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

.header-matches-filter-action-binding.yaml
[source,yaml]
----
apiVersion: camel.apache.org/v1alpha1
kind: KameletBinding
metadata:
  name: header-matches-filter-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: header-matches-filter-action
    properties:
      regex: "The Regex"
  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 `header-matches-filter-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 header-matches-filter-action-binding.yaml
----

==== *Dependencies*

The Kamelet needs the following dependencies:


- camel:core
- 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 header-matches-filter-action -p "step-0.regex=The Regex" channel/mychannel
----

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

=== Kafka Action

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

.header-matches-filter-action-binding.yaml
[source,yaml]
----
apiVersion: camel.apache.org/v1alpha1
kind: KameletBinding
metadata:
  name: header-matches-filter-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: header-matches-filter-action
    properties:
      regex: "The Regex"
  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 `header-matches-filter-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 header-matches-filter-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 header-matches-filter-action -p "step-0.regex=The Regex" 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
