Apache Camel: Architectural Insights and Examples with Standalone, Camel K and Spring Boot
Apache Camel is an open-source integration framework designed to facilitate the integration of various systems with the use of Enterprise Integration Patterns (EIP).
In this article we will be looking into the architectural stuffs that needs to be understood at the Apache Camel Core level and then we will be looking into samples with the options that we have to start with Apache Camel Development.
Apache Camel Architecture and Concepts
Before getting start with anything better to get understand it architecture and how it works, this will help us to easily debug the issues when we encounter with any.
As usual have demonstrated through a diagram with notes, go through the diagram you will get it. In summary, Camel Context is the run-time system of Apache Camel framework, we can understand this as the central interface, which will hold all the configurations for the specific camel application, each application there will be one camel context instance, typically as ApplicationContext in Spring Boot. For each use case, we will define the Routes, that is like we pull the already available reusable components and configure it inside the route and make a message flow per use case.
1. Standalone
To demonstrate the standalone, have created a project in https://github.com/ajanthanerepo/apache-camel-samples/tree/main/camel-standalone
and the main files we need to see are SampleRouteBuilder.java, which is the file contains the Route Configuration, here we are just going to log in the console.
The next is SampleStandaloneApplication.java, which have the main method to be executed when running the application.
Here, you can see two options as well, we can run it in terminal and also we can package it and run. We can extend the second option to run as service as well using service unit files.
2. Camel K
Camel K, is a client for deploying the camel applications directly to kubernetes.
As explained in the below diagram, there are several options to install the camel k client and for this demonstration I’m going to use the KAMEL CLI option.
When we use the Camel K CLI option, what happens is the connection to docker registry and minikube cluster will be made, the image will be created and pushed to docker hub, then the image will be pulled and deployed to the minikube cluster. this all will happen in a single command called kamel run, which we will be looking in the next lines in this article.
Setup a Minikube
I’m using an ARM64 Linux Distribution
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-arm64
sudo install minikube-linux-arm64 /usr/local/bin/minikube && rm minikube-linux-arm64
Before start, install docker as we
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
vagrant@minikube:~$ docker --version
Docker version 26.1.3, build b72abbb
sudo usermod -aG docker $USER && newgrp docker
sudo systemctl restart docker
Now start minikube with the below command
minikube --memory 4096 --cpus 2 --insecure-registry "docker.local:5000" --apiserver-ips=192.168.133.135 start
Install kubectl to manage the minikube cluster, here I’m installing in the same minikube installed server.
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/arm64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
vagrant@minikube:~$ kubectl version --client
Client Version: v1.30.1
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
So now my minikube cluster status
vagrant@minikube:~$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
minikube Ready control-plane 3m28s v1.30.0
Now installing camel-k client
https://github.com/apache/camel-k/releases/download/v2.3.1/camel-k-client-2.3.1-darwin-arm64.tar.gz
tar -xvf camel-k-client-2.3.1-darwin-arm64.tar.gz
sudo mv kamel /usr/local/bin/
ajanthan@local-mac camel-standalone % kamel version
Camel K Client 2.3.1
Now we need to make sure our client is connecting to the kubernetes cluster at minikube, as i’m using a remote minikube instance.
To do that we need to expose the K8s API server through nginx, install the nginx and configure the sudo vi /etc/nginx/nginx.conf by adding the below
stream {
# K8s API Server
server {
listen 0.0.0.0:8443;
proxy_pass 192.168.49.2:8443;
}
}
vagrant@minikube:~$ sudo systemctl reload nginx
vagrant@minikube:~$ sudo systemctl restart nginx
Make sure that you have copied the .kube/config file from the minikube installed server to local .kube/config and updated the access url with <SERVER_IP>:8443, by default it will point to the minikube ip. Also make sure the ca.crt, client.crt and client.key were also moved to local location and pointed correctly in .kube/config
After this is done use the below command to check kubectl working:
kubectl get nodes
Camel K Operator Installation
This is need to install the operator into the Minikube cluster, first create a secret for the docker registry. then execute the install command.
kubectl create secret docker-registry docker-secret - docker-username ajanthaneng - docker-password test
kamel install --registry docker.io --organization ajanthaneng --registry-secret docker-secret --force
after installation, you will find the operator pod up and running.
ajanthan@local-mac camelstandalone % kubectl get pods
NAME READY STATUS RESTARTS AGE
camel-k-operator-845484c94d-2t67d 1/1 Running 1 (25m ago) 45m
Now we can use our route to run using kamel. Below is the route configuration i have, same one i built for the standalone sample.
package org.camel.sample.standalone.camelstandalone;
import org.apache.camel.builder.RouteBuilder;
public class SampleRouteBuilder extends RouteBuilder {
@Override
public void configure() throws Exception {
from("timer:myTimer?period=5000")
.log("This is a standalone application using camel");
}
}
Now go this location of the file and execute the below command.
kamel run SampleRouteBuilder.java -t builder.platforms=linux/arm64
This will build an image using the ARM64 and push to the docker hub as below
You can view the progress using kubectl logs -f <OPERATOR_POD_ID>.
ajanthan@local-mac ~ % kubectl get pods
NAME READY STATUS RESTARTS AGE
camel-k-operator-845484c94d-2t67d 1/1 Running 1 (29m ago) 49m
sample-route-builder-69d6545bbd-d5mr9 1/1 Running 0 6m5s
ajanthan@local-mac ~ %
ajanthan@local-mac ~ % kubectl logs -f sample-route-builder-69d6545bbd-d5mr9
exec java -cp ./resources:/etc/camel/application.properties:/etc/camel/conf.d/_resources:/etc/camel/resources:/etc/camel/sources/SampleRouteBuilder.java:dependencies/app/camel-k-integration-2.3.1.jar:dependencies/lib/boot/io.github.crac.org-crac-0.1.3.jar:dependencies/lib/boot/io.quarkus.quarkus-bootstrap-runner-3.8.3.jar:dependencies/lib/boot/io.quarkus.quarkus-development-mode-spi-3.8.3.jar:dependencies/lib/boot/io.quarkus.quarkus-vertx-latebound-mdc-provider-3.8.3.jar:dependencies/lib/boot/io.smallrye.common.smallrye-common-constraint-2.1.2.jar:dependencies/lib/boot/io.smallrye.common.smallrye-common-cpu-2.1.2.jar:dependencies/lib/boot/io.smallrye.common.smallrye-common-expression-2.1.2.jar:dependencies/lib/boot/io.smallrye.common.smallrye-common-function-2.1.2.jar:dependencies/lib/boot/io.smallrye.common.smallrye-common-io-2.1.2.jar:dependencies/lib/boot/io.smallrye.common.smallrye-common-net-2.1.2.jar:dependencies/lib/boot/io.smallrye.common.smallrye-common-os-2.1.2.jar:dependencies/lib/boot/io.smallrye.common.smallrye-common-ref-2.1.2.jar:dependencies/lib/boot/jakarta.json.jakarta.json-api-2.1.3.jar:dependencies/lib/boot/org.eclipse.parsson.parsson-1.1.5.jar:dependencies/lib/boot/org.jboss.logging.jboss-logging-3.5.3.Final.jar:dependencies/lib/boot/org.jboss.logmanager.jboss-logmanager-3.0.4.Final.jar:dependencies/lib/main/com.aayushatharva.brotli4j.brotli4j-1.16.0.jar:dependencies/lib/main/com.aayushatharva.brotli4j.native-linux-aarch64-1.16.0.jar:dependencies/lib/main/com.aayushatharva.brotli4j.service-1.16.0.jar:dependencies/lib/main/com.fasterxml.jackson.core.jackson-annotations-2.16.1.jar:dependencies/lib/main/com.fasterxml.jackson.core.jackson-core-2.16.1.jar:dependencies/lib/main/com.fasterxml.jackson.core.jackson-databind-2.16.1.jar:dependencies/lib/main/com.fasterxml.jackson.dataformat.jackson-dataformat-yaml-2.16.1.jar:dependencies/lib/main/com.fasterxml.jackson.datatype.jackson-datatype-jdk8-2.16.1.jar:dependencies/lib/main/com.fasterxml.jackson.datatype.jackson-datatype-jsr310-2.16.1.jar:dependencies/lib/main/com.fasterxml.jackson.module.jackson-module-parameter-names-2.16.1.jar:dependencies/lib/main/com.github.mifmif.generex-1.0.2.jar:dependencies/lib/main/commons-codec.commons-codec-1.16.1.jar:dependencies/lib/main/commons-io.commons-io-2.15.1.jar:dependencies/lib/main/dk.brics.automaton.automaton-1.11-8.jar:dependencies/lib/main/io.fabric8.kubernetes-client-6.10.0.jar:dependencies/lib/main/io.fabric8.kubernetes-client-api-6.10.0.jar:dependencies/lib/main/io.fabric8.kubernetes-httpclient-vertx-6.10.0.jar:dependencies/lib/main/io.fabric8.kubernetes-model-admissionregistration-6.10.0.jar:dependencies/lib/main/io.fabric8.kubernetes-model-apiextensions-6.10.0.jar:dependencies/lib/main/io.fabric8.kubernetes-model-apps-6.10.0.jar:dependencies/lib/main/io.fabric8.kubernetes-model-autoscaling-6.10.0.jar:dependencies/lib/main/io.fabric8.kubernetes-model-batch-6.10.0.jar:dependencies/lib/main/io.fabric8.kubernetes-model-certificates-6.10.0.jar:dependencies/lib/main/io.fabric8.kubernetes-model-common-6.10.0.jar:dependencies/lib/main/io.fabric8.kubernetes-model-coordination-6.10.0.jar:dependencies/lib/main/io.fabric8.kubernetes-model-core-6.10.0.jar:dependencies/lib/main/io.fabric8.kubernetes-model-discovery-6.10.0.jar:dependencies/lib/main/io.fabric8.kubernetes-model-events-6.10.0.jar:dependencies/lib/main/io.fabric8.kubernetes-model-extensions-6.10.0.jar:dependencies/lib/main/io.fabric8.kubernetes-model-flowcontrol-6.10.0.jar:dependencies/lib/main/io.fabric8.kubernetes-model-gatewayapi-6.10.0.jar:dependencies/lib/main/io.fabric8.kubernetes-model-metrics-6.10.0.jar:dependencies/lib/main/io.fabric8.kubernetes-model-networking-6.10.0.jar:dependencies/lib/main/io.fabric8.kubernetes-model-node-6.10.0.jar:dependencies/lib/main/io.fabric8.kubernetes-model-policy-6.10.0.jar:dependencies/lib/main/io.fabric8.kubernetes-model-rbac-6.10.0.jar:dependencies/lib/main/io.fabric8.kubernetes-model-resource-6.10.0.jar:dependencies/lib/main/io.fabric8.kubernetes-model-scheduling-6.10.0.jar:dependencies/lib/main/io.fabric8.kubernetes-model-storageclass-6.10.0.jar:dependencies/lib/main/io.fabric8.openshift-client-6.10.0.jar:dependencies/lib/main/io.fabric8.openshift-client-api-6.10.0.jar:dependencies/lib/main/io.fabric8.openshift-model-6.10.0.jar:dependencies/lib/main/io.fabric8.openshift-model-clusterautoscaling-6.10.0.jar:dependencies/lib/main/io.fabric8.openshift-model-config-6.10.0.jar:dependencies/lib/main/io.fabric8.openshift-model-console-6.10.0.jar:dependencies/lib/main/io.fabric8.openshift-model-installer-6.10.0.jar:dependencies/lib/main/io.fabric8.openshift-model-machine-6.10.0.jar:dependencies/lib/main/io.fabric8.openshift-model-machineconfig-6.10.0.jar:dependencies/lib/main/io.fabric8.openshift-model-monitoring-6.10.0.jar:dependencies/lib/main/io.fabric8.openshift-model-operatorhub-6.10.0.jar:dependencies/lib/main/io.fabric8.openshift-model-storageversionmigrator-6.10.0.jar:dependencies/lib/main/io.fabric8.openshift-model-tuned-6.10.0.jar:dependencies/lib/main/io.fabric8.openshift-model-whereabouts-6.10.0.jar:dependencies/lib/main/io.fabric8.zjsonpatch-0.3.0.jar:dependencies/lib/main/io.netty.netty-buffer-4.1.107.Final.jar:dependencies/lib/main/io.netty.netty-codec-4.1.107.Final.jar:dependencies/lib/main/io.netty.netty-codec-dns-4.1.107.Final.jar:dependencies/lib/main/io.netty.netty-codec-haproxy-4.1.107.Final.jar:dependencies/lib/main/io.netty.netty-codec-http-4.1.107.Final.jar:dependencies/lib/main/io.netty.netty-codec-http2-4.1.107.Final.jar:dependencies/lib/main/io.netty.netty-codec-socks-4.1.107.Final.jar:dependencies/lib/main/io.netty.netty-common-4.1.107.Final.jar:dependencies/lib/main/io.netty.netty-handler-4.1.107.Final.jar:dependencies/lib/main/io.netty.netty-handler-proxy-4.1.107.Final.jar:dependencies/lib/main/io.netty.netty-resolver-4.1.107.Final.jar:dependencies/lib/main/io.netty.netty-resolver-dns-4.1.107.Final.jar:dependencies/lib/main/io.netty.netty-transport-4.1.107.Final.jar:dependencies/lib/main/io.netty.netty-transport-native-unix-common-4.1.107.Final.jar:dependencies/lib/main/io.quarkus.arc.arc-3.8.3.jar:dependencies/lib/main/io.quarkus.quarkus-arc-3.8.3.jar:dependencies/lib/main/io.quarkus.quarkus-core-3.8.3.jar:dependencies/lib/main/io.quarkus.quarkus-fs-util-0.0.10.jar:dependencies/lib/main/io.quarkus.quarkus-jackson-3.8.3.jar:dependencies/lib/main/io.quarkus.quarkus-jsonp-3.8.3.jar:dependencies/lib/main/io.quarkus.quarkus-kubernetes-client-3.8.3.jar:dependencies/lib/main/io.quarkus.quarkus-kubernetes-client-internal-3.8.3.jar:dependencies/lib/main/io.quarkus.quarkus-logging-json-3.8.3.jar:dependencies/lib/main/io.quarkus.quarkus-mutiny-3.8.3.jar:dependencies/lib/main/io.quarkus.quarkus-netty-3.8.3.jar:dependencies/lib/main/io.quarkus.quarkus-smallrye-context-propagation-3.8.3.jar:dependencies/lib/main/io.quarkus.quarkus-vertx-3.8.3.jar:dependencies/lib/main/io.quarkus.quarkus-virtual-threads-3.8.3.jar:dependencies/lib/main/io.smallrye.common.smallrye-common-annotation-2.1.2.jar:dependencies/lib/main/io.smallrye.common.smallrye-common-classloader-2.1.2.jar:dependencies/lib/main/io.smallrye.common.smallrye-common-vertx-context-2.1.2.jar:dependencies/lib/main/io.smallrye.config.smallrye-config-3.5.4.jar:dependencies/lib/main/io.smallrye.config.smallrye-config-common-3.5.4.jar:dependencies/lib/main/io.smallrye.config.smallrye-config-core-3.5.4.jar:dependencies/lib/main/io.smallrye.config.smallrye-config-source-yaml-3.5.4.jar:dependencies/lib/main/io.smallrye.reactive.mutiny-2.5.8.jar:dependencies/lib/main/io.smallrye.reactive.mutiny-smallrye-context-propagation-2.5.8.jar:dependencies/lib/main/io.smallrye.reactive.smallrye-mutiny-vertx-core-3.10.0.jar:dependencies/lib/main/io.smallrye.reactive.smallrye-mutiny-vertx-runtime-3.10.0.jar:dependencies/lib/main/io.smallrye.reactive.vertx-mutiny-generator-3.10.0.jar:dependencies/lib/main/io.smallrye.smallrye-context-propagation-2.1.0.jar:dependencies/lib/main/io.smallrye.smallrye-context-propagation-api-2.1.0.jar:dependencies/lib/main/io.smallrye.smallrye-context-propagation-storage-2.1.0.jar:dependencies/lib/main/io.smallrye.smallrye-fault-tolerance-vertx-6.2.6.jar:dependencies/lib/main/io.vertx.vertx-auth-common-4.5.4.jar:dependencies/lib/main/io.vertx.vertx-codegen-4.5.4.jar:dependencies/lib/main/io.vertx.vertx-core-4.5.4.jar:dependencies/lib/main/io.vertx.vertx-web-client-4.5.4.jar:dependencies/lib/main/io.vertx.vertx-web-common-4.5.4.jar:dependencies/lib/main/jakarta.activation.jakarta.activation-api-2.1.2.jar:dependencies/lib/main/jakarta.annotation.jakarta.annotation-api-2.1.1.jar:dependencies/lib/main/jakarta.el.jakarta.el-api-5.0.1.jar:dependencies/lib/main/jakarta.enterprise.jakarta.enterprise.cdi-api-4.0.1.jar:dependencies/lib/main/jakarta.enterprise.jakarta.enterprise.lang-model-4.0.1.jar:dependencies/lib/main/jakarta.inject.jakarta.inject-api-2.0.1.jar:dependencies/lib/main/jakarta.interceptor.jakarta.interceptor-api-2.1.0.jar:dependencies/lib/main/jakarta.transaction.jakarta.transaction-api-2.0.1.jar:dependencies/lib/main/jakarta.xml.bind.jakarta.xml.bind-api-4.0.1.jar:dependencies/lib/main/org.apache.camel.camel-api-4.4.1.jar:dependencies/lib/main/org.apache.camel.camel-base-4.4.1.jar:dependencies/lib/main/org.apache.camel.camel-base-engine-4.4.1.jar:dependencies/lib/main/org.apache.camel.camel-bean-4.4.1.jar:dependencies/lib/main/org.apache.camel.camel-cloud-4.4.1.jar:dependencies/lib/main/org.apache.camel.camel-cluster-4.4.1.jar:dependencies/lib/main/org.apache.camel.camel-componentdsl-4.4.1.jar:dependencies/lib/main/org.apache.camel.camel-core-catalog-4.4.1.jar:dependencies/lib/main/org.apache.camel.camel-core-engine-4.4.1.jar:dependencies/lib/main/org.apache.camel.camel-core-languages-4.4.1.jar:dependencies/lib/main/org.apache.camel.camel-core-model-4.4.1.jar:dependencies/lib/main/org.apache.camel.camel-core-processor-4.4.1.jar:dependencies/lib/main/org.apache.camel.camel-core-reifier-4.4.1.jar:dependencies/lib/main/org.apache.camel.camel-dsl-support-4.4.1.jar:dependencies/lib/main/org.apache.camel.camel-endpointdsl-4.4.1.jar:dependencies/lib/main/org.apache.camel.camel-java-joor-dsl-4.4.1.jar:dependencies/lib/main/org.apache.camel.camel-joor-4.4.1.jar:dependencies/lib/main/org.apache.camel.camel-kubernetes-4.4.1.jar:dependencies/lib/main/org.apache.camel.camel-main-4.4.1.jar:dependencies/lib/main/org.apache.camel.camel-management-api-4.4.1.jar:dependencies/lib/main/org.apache.camel.camel-microprofile-config-4.4.1.jar:dependencies/lib/main/org.apache.camel.camel-support-4.4.1.jar:dependencies/lib/main/org.apache.camel.camel-timer-4.4.1.jar:dependencies/lib/main/org.apache.camel.camel-tooling-model-4.4.1.jar:dependencies/lib/main/org.apache.camel.camel-util-4.4.1.jar:dependencies/lib/main/org.apache.camel.camel-util-json-4.4.1.jar:dependencies/lib/main/org.apache.camel.camel-xml-jaxp-util-4.4.1.jar:dependencies/lib/main/org.apache.camel.k.camel-k-core-3.8.1.jar:dependencies/lib/main/org.apache.camel.k.camel-k-core-api-3.8.1.jar:dependencies/lib/main/org.apache.camel.k.camel-k-core-support-3.8.1.jar:dependencies/lib/main/org.apache.camel.k.camel-k-runtime-3.8.1.jar:dependencies/lib/main/org.apache.camel.quarkus.camel-quarkus-bean-3.8.1.jar:dependencies/lib/main/org.apache.camel.quarkus.camel-quarkus-core-3.8.1.jar:dependencies/lib/main/org.apache.camel.quarkus.camel-quarkus-core-cloud-3.8.1.jar:dependencies/lib/main/org.apache.camel.quarkus.camel-quarkus-java-joor-dsl-3.8.1.jar:dependencies/lib/main/org.apache.camel.quarkus.camel-quarkus-kubernetes-3.8.1.jar:dependencies/lib/main/org.apache.camel.quarkus.camel-quarkus-support-commons-logging-3.8.1.jar:dependencies/lib/main/org.apache.camel.quarkus.camel-quarkus-timer-3.8.1.jar:dependencies/lib/main/org.apache.commons.commons-compress-1.26.1.jar:dependencies/lib/main/org.apache.commons.commons-lang3-3.14.0.jar:dependencies/lib/main/org.eclipse.microprofile.config.microprofile-config-api-3.0.3.jar:dependencies/lib/main/org.eclipse.microprofile.context-propagation.microprofile-context-propagation-api-1.3.jar:dependencies/lib/main/org.jboss.logging.commons-logging-jboss-logging-1.0.0.Final.jar:dependencies/lib/main/org.jboss.logging.jboss-logging-annotations-2.2.1.Final.jar:dependencies/lib/main/org.jboss.slf4j.slf4j-jboss-logmanager-2.0.0.Final.jar:dependencies/lib/main/org.jboss.threads.jboss-threads-3.5.1.Final.jar:dependencies/lib/main/org.jooq.joor-0.9.15.jar:dependencies/lib/main/org.slf4j.slf4j-api-2.0.6.jar:dependencies/lib/main/org.snakeyaml.snakeyaml-engine-2.7.jar:dependencies/lib/main/org.wildfly.common.wildfly-common-1.7.0.Final.jar:dependencies/lib/main/org.yaml.snakeyaml-2.2.jar:dependencies/quarkus-app-dependencies.txt:dependencies/quarkus-run.jar:dependencies/quarkus/generated-bytecode.jar:dependencies/quarkus/quarkus-application.dat:dependencies/quarkus/transformed-bytecode.jar io.quarkus.bootstrap.runner.QuarkusEntryPoint
2024-05-25 11:27:51,074 INFO [org.apa.cam.k.Runtime] (main) Apache Camel K Runtime 3.8.1
2024-05-25 11:27:51,075 INFO [org.apa.cam.qua.cor.CamelBootstrapRecorder] (main) Bootstrap runtime: org.apache.camel.quarkus.main.CamelMainRuntime
2024-05-25 11:27:51,077 INFO [org.apa.cam.mai.MainSupport] (main) Apache Camel (Main) 4.4.1 is starting
2024-05-25 11:27:51,091 INFO [org.apa.cam.k.sup.SourcesSupport] (main) Loading routes from: SourceDefinition{name='SampleRouteBuilder', language='java', type='source', location='file:/etc/camel/sources/SampleRouteBuilder.java', }
2024-05-25 11:27:51,849 INFO [org.apa.cam.imp.eng.AbstractCamelContext] (main) Apache Camel 4.4.1 (camel-1) is starting
2024-05-25 11:27:51,856 INFO [org.apa.cam.imp.eng.AbstractCamelContext] (main) Routes startup (started:1)
2024-05-25 11:27:51,856 INFO [org.apa.cam.imp.eng.AbstractCamelContext] (main) Started route1 (timer://myTimer)
2024-05-25 11:27:51,856 INFO [org.apa.cam.imp.eng.AbstractCamelContext] (main) Apache Camel 4.4.1 (camel-1) started in 6ms (build:0ms init:0ms start:6ms)
2024-05-25 11:27:51,859 INFO [io.quarkus] (main) camel-k-integration 2.3.1 on JVM (powered by Quarkus 3.8.3) started in 1.962s.
2024-05-25 11:27:51,859 INFO [io.quarkus] (main) Profile prod activated.
2024-05-25 11:27:51,859 INFO [io.quarkus] (main) Installed features: [camel-bean, camel-core, camel-java-joor-dsl, camel-k-core, camel-k-runtime, camel-kubernetes, camel-timer, cdi, kubernetes-client, smallrye-context-propagation, vertx]
2024-05-25 11:27:52,862 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:27:57,857 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:28:02,857 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:28:07,858 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:28:12,859 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:28:17,857 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:28:22,857 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:28:27,858 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:28:32,860 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:28:37,861 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:28:42,861 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:28:47,860 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:28:52,860 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:28:57,862 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:29:02,862 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:29:07,863 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:29:12,863 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:29:17,864 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:29:22,865 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:29:27,866 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:29:32,866 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:29:37,865 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:29:42,867 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:29:47,869 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:29:52,866 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:29:57,867 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:30:02,868 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:30:07,869 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:30:12,869 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:30:17,870 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:30:22,870 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:30:27,869 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:30:32,869 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:30:37,871 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:30:42,870 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:30:47,868 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:30:52,868 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:30:57,868 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:31:02,869 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:31:07,871 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:31:12,870 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:31:17,870 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:31:22,871 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:31:27,871 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:31:32,870 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:31:37,872 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:31:42,871 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:31:47,870 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:31:52,871 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:31:57,872 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
2024-05-25 11:32:02,875 INFO [route1] (Camel (camel-1) thread #1 - timer://myTimer) This is a standalone application using camel
Some useful commands on Camel K can be found at https://camel.apache.org/camel-k/2.3.x/cli/cli.html
3. SpringBoot
Have covered this during my previous articles at [1] and [2], please refer them to get more understanding on it.
That’s it on this blog and will plan to cover the Camel Quarkus, Camel Kafka Connector, Camel Karaf and Camel JBang on my next article.
References
[1] https://camel.apache.org/camel-k/2.3.x/installation/registry/dockerhub.html
[2] https://camel.apache.org/camel-k/2.3.x/installation/advanced/multi-architecture.html