Skip to content

Latest commit

 

History

History
150 lines (105 loc) · 4.82 KB

README.md

File metadata and controls

150 lines (105 loc) · 4.82 KB

Camel Source

These samples show how to configure a Camel source. It is a event source that can leverage one of the 250+ Apache Camel components for generating events.

Deployment Steps

These steps assume that you have checked out the repo and have a shell in this samples directory.

Prerequisites

  1. Install the Apache Camel K Operator in any namespace where you want to run Camel sources.

    The preferred version that is compatible with Camel sources is Camel K v0.3.3.

    Installation instruction are provided on the Apache Camel K Github repository. Documentation includes specific instructions for common Kubernetes environments, including development clusters.

  2. Install the Camel Source from the yaml files in the config dir from source:

    ko apply -f ../config/

    Or install a released version.

Create a Channel and a Subscriber

In order to check a CamelSource is fully working, we will create:

  • a simple Knative event display service that prints incoming events to its log
  • a in-memory channel named camel-test that will buffer events created by the event source
  • a subscription to direct events from the test channel to the event display service

Deploy display_resources.yaml, building it from source:

ko apply -f display_resources.yaml

Run a CamelSource using the Timer component

The samples directory contains some sample sources that can be used to generate events.

The simplest one, that does not require additional configuration is the "timer" source.

If you want, you can customize the source behavior using options available in the Apache Camel documentation for the timer component. All Camel components are documented in the Apache Camel github repository.

Install the timer CamelSource from source:

ko apply -f source_timer.yaml

We will verify that the published message was sent into the Knative eventing system by looking at what is downstream of the CamelSource.

  1. Use kail to tail the logs of the subscriber.

    kail -d camel-event-display --since=10m

If you've deployed the timer source, you should see log lines appearing every 3 seconds.

Run a CamelSource using the Telegram component

Another useful component available with Camel is the Telegram component. It can be used to forward messages of a Telegram chat into Knative channels as events.

Before using the provided Telegram CamelSource example, you need to follow the instructions on the Telegram website for creating a Telegram Bot. The quickest way to create a bot is to contact the Bot Father, another Telegram Bot, using your preferred Telegram client (mobile or web). After you create the bot, you'll receive an authorization token that is needed for the source to work.

First, edit the telegram CamelSource and put the authorization token, replacing the <put-your-token-here> placeholder.

To reduce noise in the event display, you can remove the previously created timer CamelSource from the namespace:

kubectl delete camelsource camel-timer-source

Install the telegram CamelSource from source:

ko apply -f source_telegram.yaml

Start again kail and keep it open on the event display:

kail -d camel-event-display --since=10m

Now, you can contact your bot with any Telegram client. Each message you send to the bot will be printed by the event display as cloudevent.

Run a Camel K Source

For complex use cases that require multiple steps to be executed before event data is ready to be published, you can use Camel K sources. Camel K lets you use Camel DSL to design one or more routes that can define arbitrarily complex workflows before sending events to the target sink.

If you have previously deployed other CamelSources, in order to reduce noise in the event display, you can remove them all from the namespace:

kubectl delete camelsource --all

Install the Camel K Source from source:

ko apply -f source_camel_k.yaml

Start again kail and keep it open on the event display:

kail -d camel-event-display --since=10m

The event display will show some JSON data periodically pulled from an external REST API. The API in the example is static, but you can use your own dynamic API by just replacing the endpoint.