// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT
= image:kamelets/google-pubsub-sink.svg[] Google Pubsub Sink

*Provided by: "Apache Software Foundation"*

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

Send messages to Google Pubsub.

The serviceAccountKey property needs to be encoded in base64, so when you pass it as parameter, don't forget to encode it.

== Configuration Options

The following table summarizes the configuration options available for the `google-pubsub-sink` Kamelet:
[width="100%",cols="2,^2,3,^2,^2,^3",options="header"]
|===
| Property| Name| Description| Type| Default| Example
| *destinationName {empty}* *| Destination Name| The Destination Name| string| | 
| *projectId {empty}* *| Project Id| The Google Cloud PubSub Project Id| string| | 
| *serviceAccountKey {empty}* *| Service Account Key| The Service account key that can be used as credentials for the PubSub publisher/subscriber| binary| | 
|===

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

== Usage

This section summarizes how the `google-pubsub-sink` can be used in various contexts.

=== Knative Sink

The `google-pubsub-sink` Kamelet can be used as Knative sink by binding it to a Knative object.

.google-pubsub-sink-binding.yaml
[source,yaml]
----
apiVersion: camel.apache.org/v1alpha1
kind: KameletBinding
metadata:
  name: google-pubsub-sink-binding
spec:
  source:
    ref:
      kind: InMemoryChannel
      apiVersion: messaging.knative.dev/v1
      name: mychannel
  sink:
    ref:
      kind: Kamelet
      apiVersion: camel.apache.org/v1alpha1
      name: google-pubsub-sink
    properties:
      destinationName: "The Destination Name"
      projectId: "The Project Id"
      serviceAccountKey: "The Service Account Key"
  
----
Make sure you have xref:latest@camel-k::installation/installation.adoc[Camel K installed] into the Kubernetes cluster you're connected to.

Save the `google-pubsub-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 google-pubsub-sink-binding.yaml
----

==== *Dependencies*

The Kamelet needs the following dependencies:


- camel:kamelet

- camel:google-pubsub

- 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 channel/mychannel google-pubsub-sink -p "sink.destinationName=The Destination Name" -p "sink.projectId=The Project Id" -p "sink.serviceAccountKey=The Service Account Key"
----

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

=== Kafka Sink

The `google-pubsub-sink` Kamelet can be used as Kafka sink by binding it to a Kafka topic.

.google-pubsub-sink-binding.yaml
[source,yaml]
----
apiVersion: camel.apache.org/v1alpha1
kind: KameletBinding
metadata:
  name: google-pubsub-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: google-pubsub-sink
    properties:
      destinationName: "The Destination Name"
      projectId: "The Project Id"
      serviceAccountKey: "The Service Account Key"
  
----

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 `google-pubsub-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 google-pubsub-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 google-pubsub-sink -p "sink.destinationName=The Destination Name" -p "sink.projectId=The Project Id" -p "sink.serviceAccountKey=The Service Account Key"
----

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
