# Camel Google Pubsub example

= Introduction

An example which shows how to integrate Camel with Google Pubsub.

== Preparing Google Pubsub

This example requires a Google Cloud Account with a Pubsub subscription.
To create a Goolge Cloud account please visit https://cloud.google.com.
To setup Pubsub subscription see https://cloud.google.com/pubsub/docs/overview

A topic and subscription need to be created and the topic and subscription name
set in the application.properties.

The topic and subscription (with names as configured in application.properties) can be created within the
Google Cloud Console or by running:

    mvn compile exec:java -Ppubsub-create-topic-subscription


In the application.properties you need to specify the

For authenticating against Google Cloud one of the following options can be used:

Using your default credentials::
  Comment out  `credentials.fileLocation`, `credentials.account` and `credentials.key`
Using a json service account credentials file::
  Set `credentials.fileLocation` to the location of the json credentials file.
  Comment out  `credentials.account` and `credentials.key`
Using an account and key::
  Set `credentials.account` to the service account email and `credentials.key` to the service account key.

== Run

Run the consumer and producer in separate shells:


    mvn compile exec:java -Ppubsub-producer

    mvn compile exec:java -Ppubsub-consumer

Initially, some messages are sent programmatically.

On the command prompt for the producer, type the messages. Each line is sent as one message to Google Pubsub.
Press `Ctrl-C` to exit.

As the pubsub channel is persistent the consumer and producer do not need to run at the same time.

Messages can be send from the Google Pubsub console which will be picked up by the consumer.

== Configuration

You can configure the details in the file:
  `src/main/resources/application.properties`

You can enable verbose logging by adjusting the `src/main/resources/log4j2.properties`
  file as documented in the file.

=== Help and contributions

If you hit any problem using Camel or have some feedback, 
then please https://camel.apache.org/support.html[let us know].

We also love contributors, 
so https://camel.apache.org/contributing.html[get involved] :-)

The Camel riders!
