// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT
= image:kamelets/infinispan-source.svg[] Infinispan Source

*Provided by: "Apache Software Foundation"*

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

Get Events from an Infinispan cache

== Configuration Options

The following table summarizes the configuration options available for the `infinispan-source` 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 Infinispan cache to use| String| | 
| *hosts {empty}* *| Hosts| Specifies the host of the cache on Infinispan instance| String| | 
| *password {empty}* *| Password| Password to connect to Infinispan.| string| | 
| *username {empty}* *| Username| Username to connect to Infinispan.| string| | 
| eventTypes| Infinispan Cluster Name| Specifies the set of event types to register by the consumer.Multiple event can be separated by comma. The possible event types are CLIENT_CACHE_ENTRY_CREATED, CLIENT_CACHE_ENTRY_MODIFIED, CLIENT_CACHE_ENTRY_REMOVED, CLIENT_CACHE_ENTRY_EXPIRED, CLIENT_CACHE_FAILOVER| string| | 
| saslMechanism| SASL Mechanism| The SASL Mechanism to use| String| `"DIGEST-MD5"`| 
| secure| Secure| If the Infinispan instance is secured or not| boolean| `true`| 
| securityRealm| Security Realm| Define the security realm to access the infinispan instance| string| `"default"`| 
| securityServerName| Security Server name| Define the security server name to access the infinispan instance| string| `"infinispan"`| 
|===

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

== Usage

This section summarizes how the `infinispan-source` can be used in various contexts.

=== Knative Source

The `infinispan-source` Kamelet can be used as Knative source by binding it to a Knative object.

.infinispan-source-binding.yaml
[source,yaml]
----
apiVersion: camel.apache.org/v1alpha1
kind: KameletBinding
metadata:
  name: infinispan-source-binding
spec:
  source:
    ref:
      kind: Kamelet
      apiVersion: camel.apache.org/v1alpha1
      name: infinispan-source
    properties:
      cacheName: "The Cache Name"
      hosts: "The Hosts"
      password: "The Password"
      username: "The Username"
  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 `infinispan-source-binding.yaml` file into your hard drive, then configure it according to your needs.

You can run the source using the following command:

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

==== *Dependencies*

The Kamelet needs the following dependencies:


- mvn:org.apache.camel.k:camel-k-kamelet-reify

- camel:kamelet

- camel:infinispan
 

==== *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 infinispan-source -p "source.cacheName=The Cache Name" -p "source.hosts=The Hosts" -p "source.password=The Password" -p "source.username=The Username" channel/mychannel
----

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

=== Kafka Source

The `infinispan-source` Kamelet can be used as Kafka source by binding it to a Kafka topic.

.infinispan-source-binding.yaml
[source,yaml]
----
apiVersion: camel.apache.org/v1alpha1
kind: KameletBinding
metadata:
  name: infinispan-source-binding
spec:
  source:
    ref:
      kind: Kamelet
      apiVersion: camel.apache.org/v1alpha1
      name: infinispan-source
    properties:
      cacheName: "The Cache Name"
      hosts: "The Hosts"
      password: "The Password"
      username: "The Username"
  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 `infinispan-source-binding.yaml` file into your hard drive, then configure it according to your needs.

You can run the source using the following command:

[source,shell]
----
kubectl apply -f infinispan-source-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 infinispan-source -p "source.cacheName=The Cache Name" -p "source.hosts=The Hosts" -p "source.password=The Password" -p "source.username=The Username" 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
