// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT
= image:kamelets/jms-apache-artemis-sink.svg[] JMS - Apache Artemis Kamelet Sink

*Provided by: "Apache Software Foundation"*

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

A Kamelet that can produce events to an Apache Artemis message broker using JMS

== Configuration Options

The following table summarizes the configuration options available for the `jms-apache-artemis-sink` Kamelet:
[width="100%",cols="2,^2,3,^2,^2,^3",options="header"]
|===
| Property| Name| Description| Type| Default| Example
| *brokerURL {empty}* *| Broker URL| The JMS URL| string| | `"tcp://my-host:61616"`
| *destinationName {empty}* *| Destination Name| The JMS destination name| string| | `"person"`
| destinationType| Destination Type| The JMS destination type (i.e.: queue or topic)| string| `"queue"`| 
|===

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

== Usage

This section summarizes how the `jms-apache-artemis-sink` can be used in various contexts.

=== Knative Sink

The `jms-apache-artemis-sink` Kamelet can be used as Knative sink by binding it to a Knative object.

.jms-apache-artemis-sink-binding.yaml
[source,yaml]
----
apiVersion: camel.apache.org/v1alpha1
kind: KameletBinding
metadata:
  name: jms-apache-artemis-sink-binding
spec:
  source:
    ref:
      kind: InMemoryChannel
      apiVersion: messaging.knative.dev/v1
      name: mychannel
  sink:
    ref:
      kind: Kamelet
      apiVersion: camel.apache.org/v1alpha1
      name: jms-apache-artemis-sink
    properties:
      brokerURL: "tcp://my-host:61616"
      destinationName: "person"
  
----
Make sure you have xref:latest@camel-k::installation/installation.adoc[Camel K installed] into the Kubernetes cluster you're connected to.

Save the `jms-apache-artemis-sink-binding.yaml` file into your hard drive, then configure it according to your needs.

You can run the sink using the following command:

[source,shell]
----
kubectl apply -f jms-apache-artemis-sink-binding.yaml
----

==== *Dependencies*

The Kamelet needs the following dependencies:


- camel:jms
- camel:kamelet
- mvn:org.apache.activemq:artemis-jms-client-all:2.17.0 

==== *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 channel/mychannel jms-apache-artemis-sink -p "sink.brokerURL=tcp://my-host:61616" -p "sink.destinationName=person"
----

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

=== Kafka Sink

The `jms-apache-artemis-sink` Kamelet can be used as Kafka sink by binding it to a Kafka topic.

.jms-apache-artemis-sink-binding.yaml
[source,yaml]
----
apiVersion: camel.apache.org/v1alpha1
kind: KameletBinding
metadata:
  name: jms-apache-artemis-sink-binding
spec:
  source:
    ref:
      kind: KafkaTopic
      apiVersion: kafka.strimzi.io/v1beta1
      name: my-topic
  sink:
    ref:
      kind: Kamelet
      apiVersion: camel.apache.org/v1alpha1
      name: jms-apache-artemis-sink
    properties:
      brokerURL: "tcp://my-host:61616"
      destinationName: "person"
  
----

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 `jms-apache-artemis-sink-binding.yaml` file into your hard drive, then configure it according to your needs.

You can run the sink using the following command:

[source,shell]
----
kubectl apply -f jms-apache-artemis-sink-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 kafka.strimzi.io/v1beta1:KafkaTopic:my-topic jms-apache-artemis-sink -p "sink.brokerURL=tcp://my-host:61616" -p "sink.destinationName=person"
----

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
