// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT
= image:kamelets/azure-eventhubs-source.svg[] Azure Eventhubs Source

*Provided by: "Apache Software Foundation"*

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

Receive events from Azure Eventhubs.

== Configuration Options

The following table summarizes the configuration options available for the `azure-eventhubs-source` Kamelet:
[width="100%",cols="2,^2,3,^2,^2,^3",options="header"]
|===
| Property| Name| Description| Type| Default| Example
| *blobAccessKey {empty}* *| Azure Storage Blob Access Key| The key for Azure Storage Blob service associated with the Blob account name| string| | 
| *blobAccountName {empty}* *| Azure Storage Blob Account Name| The name of the storage blob account to be use| string| | 
| *blobContainerName {empty}* *| Azure Storage Blob Container Name| The name of the storage blob container to be use| string| | 
| *eventhubName {empty}* *| Eventhubs Name| The eventhub name| string| | 
| *namespaceName {empty}* *| Eventhubs Namespace| The eventhubs namespace| string| | 
| *sharedAccessKey {empty}* *| Share Access Key| The key for EventHubs SAS key name| string| | 
| *sharedAccessName {empty}* *| Share Access Name| EventHubs SAS key name| string| | 
|===

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

== Usage

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

=== Knative Source

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

.azure-eventhubs-source-binding.yaml
[source,yaml]
----
apiVersion: camel.apache.org/v1alpha1
kind: KameletBinding
metadata:
  name: azure-eventhubs-source-binding
spec:
  source:
    ref:
      kind: Kamelet
      apiVersion: camel.apache.org/v1alpha1
      name: azure-eventhubs-source
    properties:
      blobAccessKey: "The Azure Storage Blob Access Key"
      blobAccountName: "The Azure Storage Blob Account Name"
      blobContainerName: "The Azure Storage Blob Container Name"
      eventhubName: "The Eventhubs Name"
      namespaceName: "The Eventhubs Namespace"
      sharedAccessKey: "The Share Access Key"
      sharedAccessName: "The Share Access Name"
  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 `azure-eventhubs-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 azure-eventhubs-source-binding.yaml
----

==== *Dependencies*

The Kamelet needs the following dependencies:


- mvn:com.fasterxml.jackson.core:jackson-core:2.11.3

- mvn:com.fasterxml.jackson.core:jackson-annotations:2.11.3

- mvn:com.fasterxml.jackson.core:jackson-databind:2.11.3

- mvn:com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.11.3

- camel:azure-eventhubs

- camel:kamelet

- camel:jackson
 

==== *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 azure-eventhubs-source -p "source.blobAccessKey=The Azure Storage Blob Access Key" -p "source.blobAccountName=The Azure Storage Blob Account Name" -p "source.blobContainerName=The Azure Storage Blob Container Name" -p "source.eventhubName=The Eventhubs Name" -p "source.namespaceName=The Eventhubs Namespace" -p "source.sharedAccessKey=The Share Access Key" -p "source.sharedAccessName=The Share Access Name" channel/mychannel
----

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

=== Kafka Source

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

.azure-eventhubs-source-binding.yaml
[source,yaml]
----
apiVersion: camel.apache.org/v1alpha1
kind: KameletBinding
metadata:
  name: azure-eventhubs-source-binding
spec:
  source:
    ref:
      kind: Kamelet
      apiVersion: camel.apache.org/v1alpha1
      name: azure-eventhubs-source
    properties:
      blobAccessKey: "The Azure Storage Blob Access Key"
      blobAccountName: "The Azure Storage Blob Account Name"
      blobContainerName: "The Azure Storage Blob Container Name"
      eventhubName: "The Eventhubs Name"
      namespaceName: "The Eventhubs Namespace"
      sharedAccessKey: "The Share Access Key"
      sharedAccessName: "The Share Access Name"
  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 `azure-eventhubs-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 azure-eventhubs-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 azure-eventhubs-source -p "source.blobAccessKey=The Azure Storage Blob Access Key" -p "source.blobAccountName=The Azure Storage Blob Account Name" -p "source.blobContainerName=The Azure Storage Blob Container Name" -p "source.eventhubName=The Eventhubs Name" -p "source.namespaceName=The Eventhubs Namespace" -p "source.sharedAccessKey=The Share Access Key" -p "source.sharedAccessName=The Share Access Name" 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
