🐊
← Apache Camel

Apache Camel 101

āļšāļ—āđ€āļĢāļĩāļĒāļ™āļ§āļąāļ™āļ—āļĩāđˆ 1: āļŠāļģāļŦāļĢāļąāļšāļœāļđāđ‰āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™ āđ„āļĄāđˆāļĄāļĩāļžāļ·āđ‰āļ™āļāļēāļ™āļāđ‡āđ€āļ‚āđ‰āļēāđƒāļˆāđ„āļ”āđ‰

Beginner Friendly Guide

āđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­āļ—āļļāļāļĢāļ°āļšāļš āļŠāđˆāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļļāļāđ€āļŠāđ‰āļ™āļ—āļēāļ‡āļ­āļĒāđˆāļēāļ‡āđ„āļĢāđ‰āļĢāļ­āļĒāļ•āđˆāļ­

āđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļ‚āļ­āļ‡ Apache Camel āļĢāļ°āļšāļšāđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­āļ‚āđ‰āļ­āļĄāļđāļĨāļĢāļ°āļ”āļąāļšāđ‚āļĨāļāļ—āļĩāđˆāļ­āļ­āļāđāļšāļšāļĄāļēāđƒāļŦāđ‰āļ„āļ™āđ„āļĄāđˆāļĄāļĩāļžāļ·āđ‰āļ™āļāļēāļ™āđ€āļ‚āđ‰āļēāđƒāļˆāļ‡āđˆāļēāļĒāļœāđˆāļēāļ™āļ āļēāļžāđāļĨāļ°āđ‚āļ„āđ‰āļ”āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡

1. āļ—āļĪāļĐāļŽāļĩāđāļĨāļ°āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄāđ€āļŠāļīāļ‡āļĨāļķāļ (Deep Theory & Architecture)

āļ—āļģāļ„āļ§āļēāļĄāļĢāļđāđ‰āļˆāļąāļāļžāļĨāļąāļ‡āļ‚āļ­āļ‡ Open Source Integration Framework āļ•āļąāđ‰āļ‡āđāļ•āđˆāļ›āļĩ 2007

1.1 Apache Camel āļ„āļ·āļ­āļ­āļ°āđ„āļĢ āđāļĨāļ°āļ—āļģāđ„āļĄāļ­āļ‡āļ„āđŒāļāļĢāļĢāļ°āļ”āļąāļšāđ‚āļĨāļāļ–āļķāļ‡āđ€āļĨāļ·āļ­āļāđƒāļŠāđ‰?

Apache Camel āļ„āļ·āļ­ Open Source Integration Framework āļ āļēāļĒāđƒāļ•āđ‰āļĨāļīāļ‚āļŠāļīāļ—āļ˜āļīāđŒ Apache License 2.0 āļžāļąāļ’āļ™āļēāļĄāļēāļ•āļąāđ‰āļ‡āđāļ•āđˆāļ›āļĩ 2007 āļĄāļĩāļŠāļļāļĄāļŠāļ™āļœāļđāđ‰āļžāļąāļ’āļ™āļēāļāļ§āđˆāļē 1,500+ āļ„āļ™āļ—āļąāđˆāļ§āđ‚āļĨāļ āļŠāđ‚āļĨāđāļāļ™āļŦāļĨāļąāļāļ„āļ·āļ­ "Connect anything. Route everything." āļŠāđˆāļ§āļĒāđāļāđ‰āļ›āļąāļāļŦāļēāļāļĢāļ°āļ”āļđāļāļŠāļīāđ‰āļ™āđ‚āļ•āđƒāļ™āļāļēāļĢāđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­āļĢāļ°āļšāļšāļ—āļĩāđˆāļ•āđˆāļēāļ‡āļ āļēāļĐāļē āļ•āđˆāļēāļ‡āđ‚āļžāļĢāđ‚āļ—āļ„āļ­āļĨ āđ‚āļ”āļĒāđ„āļĄāđˆāļ•āđ‰āļ­āļ‡āđ€āļ‚āļĩāļĒāļ™āđ‚āļ„āđ‰āļ”āļ‹āđ‰āļģāļ‹āđ‰āļ­āļ™āđƒāļŦāļĄāđˆāļ•āļąāđ‰āļ‡āđāļ•āđˆāļ•āđ‰āļ™ (No boilerplate code)

1.2 āđ€āļŠāļēāļŦāļĨāļąāļ 4 āļ›āļĢāļ°āļāļēāļĢāļ‚āļ­āļ‡ Apache Camel

  • 350+ Connectors (Components): āļŦāļąāļ§āļ•āđˆāļ­āļŠāļģāđ€āļĢāđ‡āļˆāļĢāļđāļ›āđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­āļāļąāļš Kafka, Database, AWS, Salesforce āļŊāļĨāļŊ
  • 3 DSLs: āđ€āļĨāļ·āļ­āļāđ€āļ‚āļĩāļĒāļ™āđ€āļŠāđ‰āļ™āļ—āļēāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨ (Route) āđ„āļ”āđ‰āļ—āļąāđ‰āļ‡āļ āļēāļĐāļē Java, YAML āļŦāļĢāļ·āļ­ XML
  • Flexible Deployment Runtimes: āļ›āļĢāļąāļšāđƒāļŠāđ‰āđ„āļ”āđ‰āļ•āļąāđ‰āļ‡āđāļ•āđˆāļ§āļēāļ‡āļĢāļ°āļšāļšāļšāļ™ Camel CLI, Spring Boot āđ„āļ›āļˆāļ™āļ–āļķāļ‡ Quarkus
  • AI-Ready Integration: āļĢāļ­āļ‡āļĢāļąāļš MCP Server āļŠāļģāļŦāļĢāļąāļš AI Coding Assistants āđāļĨāļ°āļ„āļģāļŠāļąāđˆāļ‡ trace/test

1.3 āļ āļēāļžāļĢāļ§āļĄ Ecosystem

āļ›āļĢāļ°āļāļ­āļšāļ”āđ‰āļ§āļĒ Camel Core (āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āļŦāļĨāļąāļ), Camel Kamelets (āļ›āļĨāļąāđŠāļāļ­āļīāļ™āļŠāļģāđ€āļĢāđ‡āļˆāļĢāļđāļ›), Camel K (āļĢāļąāļ™āļšāļ™ Kubernetes āđāļšāļš Serverless), āđāļĨāļ° Camel Karavan (Low-code Visual Tool āļĨāļēāļāļ§āļēāļ‡āļœāđˆāļēāļ™āļ āļēāļž)

1.4 āļ­āļļāļ›āļĄāļēāļ­āļļāļ›āđ„āļĄāļĒ (Analogy) & āļ āļēāļžāļāļēāļĢāļ—āļģāļ‡āļēāļ™

āļ­āļ˜āļīāļšāļēāļĒāđƒāļŦāđ‰āļ„āļ™āđ„āļĄāđˆāļĄāļĩāļžāļ·āđ‰āļ™āļāļēāļ™āđ€āļŦāđ‡āļ™āļ āļēāļžāļŠāļąāļ”āđ€āļˆāļ™āđ€āļŦāļĄāļ·āļ­āļ™āļĻāļđāļ™āļĒāđŒāļāļĢāļ°āļˆāļēāļĒāļŠāļīāļ™āļ„āđ‰āļē

āđ€āļ›āļĢāļĩāļĒāļš Apache Camel āđ€āļ›āđ‡āļ™ "āļĻāļđāļ™āļĒāđŒāļāļĢāļ°āļˆāļēāļĒāļŠāļīāļ™āļ„āđ‰āļēāđāļĨāļ°āļŦāļąāļ§āđāļ›āļĨāļ‡āļ›āļĨāļąāđŠāļāđ„āļŸāļ­āđ€āļ™āļāļ›āļĢāļ°āļŠāļ‡āļ„āđŒ" āđ„āļĄāđˆāļ§āđˆāļēāļžāļąāļŠāļ”āļļāļˆāļ°āļĄāļēāļ—āļēāļ‡āđ€āļĢāļ·āļ­āļŦāļĢāļ·āļ­āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļšāļīāļ™ āļ āļēāļĐāļēāđ€āļ­āļāļŠāļēāļĢāļˆāļ°āđ€āļ›āđ‡āļ™ JSON āļŦāļĢāļ·āļ­ XML āļĢāļ°āļšāļš Camel āļˆāļ°āđāļ›āļĨāļ‡āđāļĨāļ°āļ™āļģāļŠāđˆāļ‡āļ›āļĨāļēāļĒāļ—āļēāļ‡āđƒāļŦāđ‰āļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī

ðŸ“Ĩ
āļ•āđ‰āļ™āļ—āļēāļ‡ (Sources)
Kafka Topic, REST API
➔
🐊
Apache Camel Hub
āđāļ›āļĨāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨ JSON/XML āđāļĨāļ°āļˆāļąāļ”āđ€āļŠāđ‰āļ™āļ—āļēāļ‡āļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī
➔
🗄ïļ
āļ›āļĨāļēāļĒāļ—āļēāļ‡ (Destinations)
PostgreSQL, Salesforce
Case Study: āļĢāļ°āļšāļšāļ˜āļ™āļēāļ„āļēāļĢāļĢāļąāļšāļ„āļģāļŠāļąāđˆāļ‡āļ‹āļ·āđ‰āļ­āļœāđˆāļēāļ™ kafka:orders ➔ Camel āļ”āļķāļ‡āđāļ›āļĨāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨ JSON ➔ āļšāļąāļ™āļ—āļķāļāļĨāļ‡ PostgreSQL āđāļĨāļ°āđāļˆāđ‰āļ‡āđ€āļ•āļ·āļ­āļ™ Salesforce CRM āļ—āļąāļ™āļ—āļĩāļ”āđ‰āļ§āļĒāđ‚āļ„āđ‰āļ”āļŠāļąāđ‰āļ™āđ†

2. āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āđ‚āļ„āđ‰āļ”āļˆāļĢāļīāļ‡ (3 āļĢāļđāļ›āđāļšāļš DSL)

āđ‚āļˆāļ—āļĒāđŒāđ€āļ”āļĩāļĒāļ§āļāļąāļ™: āļĢāļąāļšāļˆāļēāļ Kafka ➔ āđāļ›āļĨāļ‡ JSON ➔ āļšāļąāļ™āļ—āļķāļāļĨāļ‡ SQL

📁 āļĢāļąāļ™āļ„āļģāļŠāļąāđˆāļ‡: camel run kafka-to-db.yaml
- route:
    from:
      uri: kafka:orders
      steps:
        - unmarshal:
            json: {}
        - to:
            uri: sql:INSERT INTO orders (id, amount) VALUES (:#id, :#amount)

🏋ïļâ€â™‚ïļ āđ‚āļˆāļ—āļĒāđŒāļāļķāļāļ›āļāļīāļšāļąāļ•āļīāļ›āļĢāļ°āļˆāļģāļ§āļąāļ™ (Hands-on Drill)

āļ—āļ”āļĨāļ­āļ‡āļĨāļ‡āļĄāļ·āļ­āļ—āļģāļ”āđ‰āļ§āļĒ Camel CLI āļšāļ™āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ‚āļ­āļ‡āļ„āļļāļ“

  1. āļ•āļīāļ”āļ•āļąāđ‰āļ‡ Camel CLI: curl -fsSL https://camel.apache.org/install.sh | sh
  2. āļŠāļĢāđ‰āļēāļ‡āđ„āļŸāļĨāđŒāđ‚āļ›āļĢāđ€āļˆāļāļ•āđŒ: camel init main-route.yaml
  3. āļ•āļąāđ‰āļ‡āļ„āđˆāļēāļĢāļąāļšāļŠāļąāļāļāļēāļ“āļˆāļēāļ timer:trigger?period=2000 āđāļĨāđ‰āļ§āļŠāđˆāļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄ "Hello Apache Camel Integration!" āļ­āļ­āļāđ„āļ›āļ—āļĩāđˆ log:info
  4. āļĢāļąāļ™āļ„āļģāļŠāļąāđˆāļ‡: camel run main-route.yaml

📝 āđāļšāļšāļ—āļ”āļŠāļ­āļšāļ—āļšāļ—āļ§āļ™āļ„āļ§āļēāļĄāļĢāļđāđ‰ (āļ•āļ­āļšāļ›āļļāđŠāļš āļĢāļđāđ‰āļœāļĨāļ›āļąāđŠāļš)

āđ€āļĨāļ·āļ­āļāļ„āļģāļ•āļ­āļšāļ—āļĩāđˆāļ„āļļāļ“āļ„āļīāļ”āļ§āđˆāļēāļ–āļđāļāļ•āđ‰āļ­āļ‡ āļĢāļ°āļšāļšāļˆāļ°āđāļŠāļ”āļ‡āļœāļĨāļĨāļąāļžāļ˜āđŒāđāļĨāļ°āļ„āļģāļ­āļ˜āļīāļšāļēāļĒāļ—āļąāļ™āļ—āļĩ