Chapter 19. Cassandra Sink
Chapter 19. Cassandra Sink Send data to a Cassandra Cluster. This Kamelet expects the body as JSON Array. The content of the JSON Array will be used as input for the CQL Prepared Statement set in the query parameter. 19.1. Configuration Options The following table summarizes the configuration options available for the cassandra-sink Kamelet: Property Name Description Type Default Example connectionHost * Connection Host Hostname(s) cassandra server(s). Multiple hosts can be separated by comma. string "localhost" connectionPort * Connection Port Port number of cassandra server(s) string 9042 keyspace * Keyspace Keyspace to use string "customers" password * Password The password to use for accessing a secured Cassandra Cluster string query * Query The query to execute against the Cassandra cluster table string username * Username The username to use for accessing a secured Cassandra Cluster string consistencyLevel Consistency Level Consistency level to use. The value can be one of ANY, ONE, TWO, THREE, QUORUM, ALL, LOCAL_QUORUM, EACH_QUORUM, SERIAL, LOCAL_SERIAL, LOCAL_ONE string "ANY" Note Fields marked with an asterisk (*) are mandatory. 19.2. Dependencies At runtime, the cassandra-sink Kamelet relies upon the presence of the following dependencies: camel:jackson camel:kamelet camel:cassandraql 19.3. Usage This section describes how you can use the cassandra-sink . 19.3.1. Knative Sink You can use the cassandra-sink Kamelet as a Knative sink by binding it to a Knative object. cassandra-sink-binding.yaml apiVersion: camel.apache.org/v1alpha1 kind: KameletBinding metadata: name: cassandra-sink-binding spec: source: ref: kind: Channel apiVersion: messaging.knative.dev/v1 name: mychannel sink: ref: kind: Kamelet apiVersion: camel.apache.org/v1alpha1 name: cassandra-sink properties: connectionHost: "localhost" connectionPort: 9042 keyspace: "customers" password: "The Password" query: "The Query" username: "The Username" 19.3.1.1. Prerequisite Make sure you have "Red Hat Integration - Camel K" installed into the OpenShift cluster you're connected to. 19.3.1.2. Procedure for using the cluster CLI Save the cassandra-sink-binding.yaml file to your local drive, and then edit it as needed for your configuration. Run the sink by using the following command: oc apply -f cassandra-sink-binding.yaml 19.3.1.3. Procedure for using the Kamel CLI Configure and run the sink by using the following command: kamel bind channel:mychannel cassandra-sink -p "sink.connectionHost=localhost" -p sink.connectionPort=9042 -p "sink.keyspace=customers" -p "sink.password=The Password" -p "sink.query=Query" -p "sink.username=The Username" This command creates the KameletBinding in the current namespace on the cluster. 19.3.2. Kafka Sink You can use the cassandra-sink Kamelet as a Kafka sink by binding it to a Kafka topic. cassandra-sink-binding.yaml apiVersion: camel.apache.org/v1alpha1 kind: KameletBinding metadata: name: cassandra-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: cassandra-sink properties: connectionHost: "localhost" connectionPort: 9042 keyspace: "customers" password: "The Password" query: "The Query" username: "The Username" 19.3.2.1. Prerequisites Ensure that you've installed the AMQ Streams operator in your OpenShift cluster and created a topic named my-topic in the current namespace. Make also sure you have "Red Hat Integration - Camel K" installed into the OpenShift cluster you're connected to. 19.3.2.2. Procedure for using the cluster CLI Save the cassandra-sink-binding.yaml file to your local drive, and then edit it as needed for your configuration. Run the sink by using the following command: oc apply -f cassandra-sink-binding.yaml 19.3.2.3. Procedure for using the Kamel CLI Configure and run the sink by using the following command: kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic cassandra-sink -p "sink.connectionHost=localhost" -p sink.connectionPort=9042 -p "sink.keyspace=customers" -p "sink.password=The Password" -p "sink.query=The Query" -p "sink.username=The Username" This command creates the KameletBinding in the current namespace on the cluster. 19.4. Kamelet source file https://github.com/openshift-integration/kamelet-catalog/cassandra-sink.kamelet.yaml
apiVersion: camel.apache.org/v1alpha1 kind: KameletBinding metadata: name: cassandra-sink-binding spec: source: ref: kind: Channel apiVersion: messaging.knative.dev/v1 name: mychannel sink: ref: kind: Kamelet apiVersion: camel.apache.org/v1alpha1 name: cassandra-sink properties: connectionHost: "localhost" connectionPort: 9042 keyspace: "customers" password: "The Password" query: "The Query" username: "The Username" apply -f cassandra-sink-binding.yaml kamel bind channel:mychannel cassandra-sink -p "sink.connectionHost=localhost" -p sink.connectionPort=9042 -p "sink.keyspace=customers" -p "sink.password=The Password" -p "sink.query=Query" -p "sink.username=The Username" apiVersion: camel.apache.org/v1alpha1 kind: KameletBinding metadata: name: cassandra-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: cassandra-sink properties: connectionHost: "localhost" connectionPort: 9042 keyspace: "customers" password: "The Password" query: "The Query" username: "The Username" apply -f cassandra-sink-binding.yaml kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic cassandra-sink -p "sink.connectionHost=localhost" -p sink.connectionPort=9042 -p "sink.keyspace=customers" -p "sink.password=The Password" -p "sink.query=The Query" -p "sink.username=The Username"