Apache Camel

at

Quarkus Insights

 

 

Claus Ibsen
@davsclaus@twitter

Zineb Bendhiba
@zbendhiba@mastodon.social

Peter Palaga
@ppalaga@mastodon.social

Image from 1zoom.me

Agenda

  • Apache Camel intro (Peter)
  • Camel Jbang demo (Claus)
  • Camel Quarkus (Peter)
  • Camel Quarkus demo (Zineb)
Systems integration
Image by Aaron Hockley CC BY-NC-ND 2.0

350+ connectors

Filetypes:

  • Plaintext, XML, HTML, CSV, JSON, ZIP, ...
  • Apache Tika (MS Office, OpenDocument, ...)

Protocols:

  • TCP/UDP, DNS, FTP, HTTP, IRC, SSH, ...
  • REST, GRPC, git, ...
  • IoT: CoAP, MQTT, PubNub

Public/private Clouds:   

  • AWS: S3, SQS, Kinesis, ...
  • Azure: Blob, Queue, ...
  • Google: BigQuery, PubSub
  • DigitalOcean, Kubernetes, OpenShift, etcd, Docker

Data & messaging

  • Hazelcast, Infinispan, Redis, ...
  • Cassandra, MongoDB
  • JDBC, SQL, JPA
  • Kafka, Debezium
  • JMS, AMQP, QPID, STOMP

APIs:

  • Social: Facebook, Twitter, LinkedIn
  • Box, Dropbox, Google Calendar/Drive/Mail/Docs
  • Salesforce, SAP, ServiceNow, FHIR
  • GitHub, Jira, Telegram

Misc:

  • Barcode
  • Base64, JsonPath, Freemarker, Groovy, Mustache, Ruby
  • JMX, OpenTelemetry, OpenTracing, OptaPlanner, Syslog

Check the full list

Image by Jess Larson

Enterprise Integration Patterns (EIP)

EIPs
https://www.enterpriseintegrationpatterns.com/
Image by Gary Todd CC0 1.0

Domain Specific Languages (DSL)

Java XML
class MyCamelRouter extends RouteBuilder {
  @Override
  public void configure() throws Exception {
    from("aws2-s3://my-bucket?prefix=hello.txt")
      .log("Got an S3 file: ${body}")
      .to("telegram:bots");
  }
}
<routes
  xmlns="http://camel.apache.org/schema/spring">
  <route id="my-route">
    <from uri="aws2-s3://my-bucket?prefix=hello.txt"/>
    <log message="Got an S3 file: ${body}"/>
    <to uri="telegram:bots"/>
  </route>
</routes>

Groovy, Scala, Kotlin, YAML, ...

Image by Jason Mrachina CC BY-NC-ND 2.0

Ways to run Camel

 

Standalone
Quarkus Apache Karaf Knative/Kubernetes WildFly
Spring Boot Spring Boot Apache Karaf WildFly

Image by Anders Lanzen CC BY-NC-SA 2.0
Image from pxhere.com CC0 Public Domain

code.quarkus.io (with native support)
Camel Quarkus Docs (all)

Seamless integration

with Quarkus

  • Live reload
  • Dev services (via Testcontainers)
    • DBs, Kafka, Mock Mailer, ...
  • Continuous testing
Image adapted from Wikimedia Commons CC BY 4.0

Camel Quarkus Demo                  

Camel Quarkus demo

github.com/zbendhiba/telegram-kafka/tree/221128-quarkus-insights

Wrap up

  • Apache 🐪 = an integration toolkit with 350+ connectors
  • 🚀🔬😍 on Quarkus