SlideShare a Scribd company logo
1 of 34
Download to read offline
Apache Camel Design Patterns
Learned Through Blood, Sweat, and Tears
June 2016
Bilgin Ibryam
@bibryam
Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears2
Bilgin Ibryam
● Senior Middleware Architect at Red Hat UK
● Apache Camel Committer and PMC member
● Apache OFBiz Committer and PMC member
● Author of Camel Design Patterns (new)
● Author of Apache Camel Message Routing
● Twitter: @bibryam
● Email: bibryam@gmail.com
● Blog: http://ofbizian.com
● LinkedIn: http://www.linkedin.com/in/bibryam
Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears3
Apache Camel Project Status
It has all necessary ingredients for a successful open source project.
● Community: 52 committers, 903 users
● Support by large vendors (Red Hat)
● Connectors (256), DataFormats (40)
● Enterprise Integration Patterns++
● Domain Specific Language
● Ecosystem: Karaf, ActiveMQ, CXF, Fabric,
Hawtio, Spring and others
● Monolith, SOA, Microservices, Serverless
Source https://www.openhub.net/p/camel/
Stats Date: 06/06/2016
Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears4
Application Integration with Camel
What do you need to know to create great Camel applications?
Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears5
Happy Path Scenarios
How Pipes and Filters Pattern looks like in Camel?
Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears6
VETRO
What is a typical processing flow for a Camel route?
● Validate: validation, schematron, MSV, Jing, bean validation components
● Enrich: enrich and pollEnrich EIPs, custom beans

● Transform: Data formats, auto type conversion, templating components
● Route: Message routing EIPs
● Operate: this is the essence of the processing flow

Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears7
Edge Component
Let's start with a simple Camel route that consumes files
Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears8
Edge Component
How to expose the same business functionality to multiple consumers?

Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears9
Edge Component
Encapsulate endpoint-specific details and prevent them from leaking into
the business logic of an integration flow.
Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears10
Read vs Write Operations
How to evolve Read and Write operations independently?
Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears11
CQRS
This decouples read from write operations to allow them to evolve
independently.
Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears12
Unhappy Path Scenarios
Happy paths are the easy ones. More work is required for designing and
implementing the unhappy paths.
● Data Integrity Pattern
● Saga Pattern
● 
Retry Pattern
● Idempotent Filter Pattern
● Circuit Breaker Pattern
● Error Channels Pattern
● Throttling Pattern
Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears13
Data Integrity
How hard can it be to copy files from one location to another?
Download Data Integrity Chapter: http://bit.ly/came-design-patterns-sample
Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears14
Data Integrity
Transactional systems
Local transaction manager
Global transaction manager
Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears15
Saga
How to avoid distributed transactions and ensure data consistency?
Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears16
Saga
Ensures that each step of the business process has a compensating action
to undo the work completed in the case of partial failures.
Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears17
Retry
To enable applications handle anticipated transient failures by transparently
retrying a failed operation with expectation it to be successful.
● Which failures to retry?
● How often to retry?
● Idempotency
● Monitoring
● Timeouts and SLAs
Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears18
Retry
Camel RedeliveryPolicy
● The most well known retry mechanism in Camel
● Retries only the failing endpoint
● Fully in-memory
● Thread blocking behavior by default
● Can be asynchronous
● Good for small number of quick retries (in milliseconds)
Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears19
Retry
ActiveMQ consumer RedeliveryPolicy
● Retries the message from the beginning of the Camel route
● Not used very often, but enabled by default
● Fully in-memory
● Thread blocking by default
● Good for small number of quick retries (in milliseconds)
Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears20
Retry
ActiveMQ Broker Redelivery
● ActiveMQ specific and requires custom logic
● It will consume the message again from a queue
● Persisted at the broker rather than application memory
● Can be clustered and use fail over, load balancing, etc
● Good for long persisted retries (in minutes or hours)
Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears21
Circuit Breaker
How to guard a system by cascading failures and slow responses from
other systems?
Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears22
Circuit Breaker
Improves the stability and the resilience of a system by guarding integration
points from cascading failures and slow responses.
Closed state
Open state
Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears23
Circuit Breaker
Improves the stability and the resilience of a system by guarding integration
points from cascading failures and slow responses.
Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears24
Circuit Breaker
Two Circuit Breaker Implementations in Camel 2.18

Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears25
Bulkhead
How to enforce resource partitioning and damage containment in order to
preserve partial functionality in the case of a failure?
Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears26
Bulkhead
Enforces resource partitioning and damage containment in order to
preserve partial functionality in the case of a failure.
● Multi-threaded EIPs: Delayer, Multicast, Recipient List, Splitter, Threads,
Throttler, Wire Tap, Polling Consumer, ProducerTemplate, and OnCompletion.
● Async Error Handler
● Circuit Breaker EIP
Possible Camel bulkhead points:
Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears27
Scalability Scenarios
Vertical scaling (performance tuning)
● Endpoints: messaging client buffers, DB client batching, template caching choices
● Concurrent consumers option: Seda, VM, JMS, RabbitMQ, Disruptor, AWS-SQS
● Data types choice: affects content based router, splitter, filter, aggregator
● Multithreading: parallel processing EIPs, threads DSL
 construct, Seda component,
asynchronous redelivery/retry
● Micro optimizations: log tuning, camel sampler EIP, disable JMX, disable message
history, disable original message record
● Startup/Shutdown: Use lazyLoadTypeConverters for a faster application startup, or
configure the shutdownStrategy for a faster shutdown
● Tune: JVM options, networking and operating system
Camel performance tuning blog post:
http://bit.ly/camel-tuning
Camel performance tuning blog post:
http://bit.ly/camel-tuning
Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears28
Horizontal Scaling
Service Instance Pattern for accommodating increasing workloads.
Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears29
Service Instance
Areas to consider before horizontally scaling a Camel application.
● Service state: load balancer, circuit breaker, resequencer, sampler,
throttler, idempotent consumer and aggregator are stateful EIPs!
● Request dispatcher: Messaging, HTTP, file (what about locking?)
● Message ordering: exclusive consumer, message groups, consumer
priority, message priority, virtual topics
● Singleton service requirements: for batch jobs, and concurrent polling
● Other resource contention and coupling considerations
Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears30
What did we cover so far?
Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears31
How patterns are changing?
What is happening in the IT industry today?
● Canonical Data Model
● Edge Component
● Reusable Route
● Runtime Reconfiguration
● Singleton Service
● Batch jobs in JVM
● Bounded Context
● Standalone services
● Favor code duplication
● Less configuration, more redeployment
● Container managed singleton
● Container scheduling
● Circuit Breaker, Bulkhead, Health checks..
Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears32
Win a print copy of Camel Design Patterns
When was the first commit to Apache Camel project done?
Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears33
Win a print copy of Camel Design Patterns
When was the first commit to Apache Camel project done?
More Information
Learn more about Apache Camel: http://camel.apache.org
Check out Camel Design Patterns: https://leanpub.com/camel-design-patterns
Develop Apache Camel based integrations using Red Hat JBoss Fuse: red.ht/FuseDev

More Related Content

What's hot

Monitoring With Prometheus
Monitoring With PrometheusMonitoring With Prometheus
Monitoring With PrometheusKnoldus Inc.
 
Learning Docker from Square One
Learning Docker from Square OneLearning Docker from Square One
Learning Docker from Square OneDocker, Inc.
 
Monitoring Kubernetes with Prometheus
Monitoring Kubernetes with PrometheusMonitoring Kubernetes with Prometheus
Monitoring Kubernetes with PrometheusGrafana Labs
 
Flow Tuning: Mule 3 vs. Mule 4 - MuleSoft Chicago CONNECT
Flow Tuning: Mule 3 vs. Mule 4 - MuleSoft Chicago CONNECTFlow Tuning: Mule 3 vs. Mule 4 - MuleSoft Chicago CONNECT
Flow Tuning: Mule 3 vs. Mule 4 - MuleSoft Chicago CONNECTSabrina Marechal
 
[AWS Dev Day] 앱 현대화 | DevOps 개발자가 되기 위한 쿠버네티스 핵심 활용 예제 알아보기 - 정영준 AWS 솔루션즈 아키...
[AWS Dev Day] 앱 현대화 | DevOps 개발자가 되기 위한 쿠버네티스 핵심 활용 예제 알아보기 - 정영준 AWS 솔루션즈 아키...[AWS Dev Day] 앱 현대화 | DevOps 개발자가 되기 위한 쿠버네티스 핵심 활용 예제 알아보기 - 정영준 AWS 솔루션즈 아키...
[AWS Dev Day] 앱 현대화 | DevOps 개발자가 되기 위한 쿠버네티스 핵심 활용 예제 알아보기 - 정영준 AWS 솔루션즈 아키...Amazon Web Services Korea
 
[네전따] 네트워크 엔지니어에게 쿠버네티스는 어떤 의미일까요
[네전따] 네트워크 엔지니어에게 쿠버네티스는 어떤 의미일까요[네전따] 네트워크 엔지니어에게 쿠버네티스는 어떤 의미일까요
[네전따] 네트워크 엔지니어에게 쿠버네티스는 어떤 의미일까요Jo Hoon
 
Real-time Data Streaming from Oracle to Apache Kafka
Real-time Data Streaming from Oracle to Apache Kafka Real-time Data Streaming from Oracle to Apache Kafka
Real-time Data Streaming from Oracle to Apache Kafka confluent
 
Integrating Microservices with Apache Camel
Integrating Microservices with Apache CamelIntegrating Microservices with Apache Camel
Integrating Microservices with Apache CamelChristian Posta
 
Introduction to Prometheus
Introduction to PrometheusIntroduction to Prometheus
Introduction to PrometheusJulien Pivotto
 
Tadx - Présentation Conteneurisation
Tadx -  Présentation ConteneurisationTadx -  Présentation Conteneurisation
Tadx - Présentation ConteneurisationTADx
 
A Java Microservices Spring Boot and Docker case study.
A Java Microservices Spring Boot and Docker case study.A Java Microservices Spring Boot and Docker case study.
A Java Microservices Spring Boot and Docker case study.Subramanyam Vemala
 
Monitoring Hadoop with Prometheus (Hadoop User Group Ireland, December 2015)
Monitoring Hadoop with Prometheus (Hadoop User Group Ireland, December 2015)Monitoring Hadoop with Prometheus (Hadoop User Group Ireland, December 2015)
Monitoring Hadoop with Prometheus (Hadoop User Group Ireland, December 2015)Brian Brazil
 
Docker 101 - Nov 2016
Docker 101 - Nov 2016Docker 101 - Nov 2016
Docker 101 - Nov 2016Docker, Inc.
 
Kubernetes 101 - A Cluster Operating System
Kubernetes 101 - A Cluster Operating SystemKubernetes 101 - A Cluster Operating System
Kubernetes 101 - A Cluster Operating Systemmikaelbarbero
 
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요Jo Hoon
 
Cluster-as-code. The Many Ways towards Kubernetes
Cluster-as-code. The Many Ways towards KubernetesCluster-as-code. The Many Ways towards Kubernetes
Cluster-as-code. The Many Ways towards KubernetesQAware GmbH
 
Introduction to Docker - 2017
Introduction to Docker - 2017Introduction to Docker - 2017
Introduction to Docker - 2017Docker, Inc.
 

What's hot (20)

Monitoring With Prometheus
Monitoring With PrometheusMonitoring With Prometheus
Monitoring With Prometheus
 
Learning Docker from Square One
Learning Docker from Square OneLearning Docker from Square One
Learning Docker from Square One
 
Monitoring Kubernetes with Prometheus
Monitoring Kubernetes with PrometheusMonitoring Kubernetes with Prometheus
Monitoring Kubernetes with Prometheus
 
Flow Tuning: Mule 3 vs. Mule 4 - MuleSoft Chicago CONNECT
Flow Tuning: Mule 3 vs. Mule 4 - MuleSoft Chicago CONNECTFlow Tuning: Mule 3 vs. Mule 4 - MuleSoft Chicago CONNECT
Flow Tuning: Mule 3 vs. Mule 4 - MuleSoft Chicago CONNECT
 
[AWS Dev Day] 앱 현대화 | DevOps 개발자가 되기 위한 쿠버네티스 핵심 활용 예제 알아보기 - 정영준 AWS 솔루션즈 아키...
[AWS Dev Day] 앱 현대화 | DevOps 개발자가 되기 위한 쿠버네티스 핵심 활용 예제 알아보기 - 정영준 AWS 솔루션즈 아키...[AWS Dev Day] 앱 현대화 | DevOps 개발자가 되기 위한 쿠버네티스 핵심 활용 예제 알아보기 - 정영준 AWS 솔루션즈 아키...
[AWS Dev Day] 앱 현대화 | DevOps 개발자가 되기 위한 쿠버네티스 핵심 활용 예제 알아보기 - 정영준 AWS 솔루션즈 아키...
 
[네전따] 네트워크 엔지니어에게 쿠버네티스는 어떤 의미일까요
[네전따] 네트워크 엔지니어에게 쿠버네티스는 어떤 의미일까요[네전따] 네트워크 엔지니어에게 쿠버네티스는 어떤 의미일까요
[네전따] 네트워크 엔지니어에게 쿠버네티스는 어떤 의미일까요
 
Real-time Data Streaming from Oracle to Apache Kafka
Real-time Data Streaming from Oracle to Apache Kafka Real-time Data Streaming from Oracle to Apache Kafka
Real-time Data Streaming from Oracle to Apache Kafka
 
Integrating Microservices with Apache Camel
Integrating Microservices with Apache CamelIntegrating Microservices with Apache Camel
Integrating Microservices with Apache Camel
 
Introduction to Prometheus
Introduction to PrometheusIntroduction to Prometheus
Introduction to Prometheus
 
Tadx - Présentation Conteneurisation
Tadx -  Présentation ConteneurisationTadx -  Présentation Conteneurisation
Tadx - Présentation Conteneurisation
 
A Java Microservices Spring Boot and Docker case study.
A Java Microservices Spring Boot and Docker case study.A Java Microservices Spring Boot and Docker case study.
A Java Microservices Spring Boot and Docker case study.
 
Monitoring Hadoop with Prometheus (Hadoop User Group Ireland, December 2015)
Monitoring Hadoop with Prometheus (Hadoop User Group Ireland, December 2015)Monitoring Hadoop with Prometheus (Hadoop User Group Ireland, December 2015)
Monitoring Hadoop with Prometheus (Hadoop User Group Ireland, December 2015)
 
Docker 101 - Nov 2016
Docker 101 - Nov 2016Docker 101 - Nov 2016
Docker 101 - Nov 2016
 
Kubernetes 101 - A Cluster Operating System
Kubernetes 101 - A Cluster Operating SystemKubernetes 101 - A Cluster Operating System
Kubernetes 101 - A Cluster Operating System
 
Présentation Docker
Présentation DockerPrésentation Docker
Présentation Docker
 
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
 
Docker
DockerDocker
Docker
 
Cluster-as-code. The Many Ways towards Kubernetes
Cluster-as-code. The Many Ways towards KubernetesCluster-as-code. The Many Ways towards Kubernetes
Cluster-as-code. The Many Ways towards Kubernetes
 
Introduction to Docker - 2017
Introduction to Docker - 2017Introduction to Docker - 2017
Introduction to Docker - 2017
 
Quarkus k8s
Quarkus   k8sQuarkus   k8s
Quarkus k8s
 

Similar to Camel Desing Patterns Learned Through Blood, Sweat, and Tears

Cloud Native Camel Design Patterns
Cloud Native Camel Design PatternsCloud Native Camel Design Patterns
Cloud Native Camel Design PatternsBilgin Ibryam
 
TS 4839 - Enterprise Integration Patterns in Practice
TS 4839 - Enterprise Integration Patterns in PracticeTS 4839 - Enterprise Integration Patterns in Practice
TS 4839 - Enterprise Integration Patterns in Practiceaegloff
 
Clipper: A Low-Latency Online Prediction Serving System
Clipper: A Low-Latency Online Prediction Serving SystemClipper: A Low-Latency Online Prediction Serving System
Clipper: A Low-Latency Online Prediction Serving SystemDatabricks
 
Amazon EC2 deepdive and a sprinkel of AWS Compute | AWS Floor28
Amazon EC2 deepdive and a sprinkel of AWS Compute | AWS Floor28Amazon EC2 deepdive and a sprinkel of AWS Compute | AWS Floor28
Amazon EC2 deepdive and a sprinkel of AWS Compute | AWS Floor28Amazon Web Services
 
Low Latency Polyglot Model Scoring using Apache Apex
Low Latency Polyglot Model Scoring using Apache ApexLow Latency Polyglot Model Scoring using Apache Apex
Low Latency Polyglot Model Scoring using Apache ApexApache Apex
 
Stream Data Processing at Big Data Landscape by Oleksandr Fedirko
Stream Data Processing at Big Data Landscape by Oleksandr Fedirko Stream Data Processing at Big Data Landscape by Oleksandr Fedirko
Stream Data Processing at Big Data Landscape by Oleksandr Fedirko GlobalLogic Ukraine
 
Event Detection Pipelines with Apache Kafka
Event Detection Pipelines with Apache KafkaEvent Detection Pipelines with Apache Kafka
Event Detection Pipelines with Apache KafkaDataWorks Summit
 
Energy efficient AI workload partitioning on multi-core systems
Energy efficient AI workload partitioning on multi-core systemsEnergy efficient AI workload partitioning on multi-core systems
Energy efficient AI workload partitioning on multi-core systemsDeepak Shankar
 
Apache Camel with Spring boot
Apache Camel with Spring bootApache Camel with Spring boot
Apache Camel with Spring bootKnoldus Inc.
 
Apache Camel with Spring boot
Apache Camel with Spring bootApache Camel with Spring boot
Apache Camel with Spring bootKnoldus Inc.
 
Red Hat Open Day JBoss Fuse
Red Hat Open Day JBoss FuseRed Hat Open Day JBoss Fuse
Red Hat Open Day JBoss FuseAdrian Gigante
 
Scaling Up Machine Learning Experimentation at Tubi 5x and Beyond
Scaling Up Machine Learning Experimentation at Tubi 5x and BeyondScaling Up Machine Learning Experimentation at Tubi 5x and Beyond
Scaling Up Machine Learning Experimentation at Tubi 5x and BeyondScyllaDB
 
OS for AI: Elastic Microservices & the Next Gen of ML
OS for AI: Elastic Microservices & the Next Gen of MLOS for AI: Elastic Microservices & the Next Gen of ML
OS for AI: Elastic Microservices & the Next Gen of MLNordic APIs
 
AWS Serverless patterns & best-practices in AWS
AWS Serverless  patterns & best-practices in AWSAWS Serverless  patterns & best-practices in AWS
AWS Serverless patterns & best-practices in AWSDima Pasko
 
Your Linux AMI: Optimization and Performance (CPN302) | AWS re:Invent 2013
Your Linux AMI: Optimization and Performance (CPN302) | AWS re:Invent 2013Your Linux AMI: Optimization and Performance (CPN302) | AWS re:Invent 2013
Your Linux AMI: Optimization and Performance (CPN302) | AWS re:Invent 2013Amazon Web Services
 
Multithreading and Actors
Multithreading and ActorsMultithreading and Actors
Multithreading and ActorsDiego Pacheco
 
Performance Oriented Design
Performance Oriented DesignPerformance Oriented Design
Performance Oriented DesignRodrigo Campos
 
AskTom: How to Make and Test Your Application "Oracle RAC Ready"?
AskTom: How to Make and Test Your Application "Oracle RAC Ready"?AskTom: How to Make and Test Your Application "Oracle RAC Ready"?
AskTom: How to Make and Test Your Application "Oracle RAC Ready"?Markus Michalewicz
 
Amazon Redshift 與 Amazon Redshift Spectrum 幫您建立現代化資料倉儲 (Level 300)
Amazon Redshift 與 Amazon Redshift Spectrum 幫您建立現代化資料倉儲 (Level 300)Amazon Redshift 與 Amazon Redshift Spectrum 幫您建立現代化資料倉儲 (Level 300)
Amazon Redshift 與 Amazon Redshift Spectrum 幫您建立現代化資料倉儲 (Level 300)Amazon Web Services
 

Similar to Camel Desing Patterns Learned Through Blood, Sweat, and Tears (20)

Cloud Native Camel Design Patterns
Cloud Native Camel Design PatternsCloud Native Camel Design Patterns
Cloud Native Camel Design Patterns
 
TS 4839 - Enterprise Integration Patterns in Practice
TS 4839 - Enterprise Integration Patterns in PracticeTS 4839 - Enterprise Integration Patterns in Practice
TS 4839 - Enterprise Integration Patterns in Practice
 
Clipper: A Low-Latency Online Prediction Serving System
Clipper: A Low-Latency Online Prediction Serving SystemClipper: A Low-Latency Online Prediction Serving System
Clipper: A Low-Latency Online Prediction Serving System
 
Amazon EC2 deepdive and a sprinkel of AWS Compute | AWS Floor28
Amazon EC2 deepdive and a sprinkel of AWS Compute | AWS Floor28Amazon EC2 deepdive and a sprinkel of AWS Compute | AWS Floor28
Amazon EC2 deepdive and a sprinkel of AWS Compute | AWS Floor28
 
EIP In Practice
EIP In PracticeEIP In Practice
EIP In Practice
 
Low Latency Polyglot Model Scoring using Apache Apex
Low Latency Polyglot Model Scoring using Apache ApexLow Latency Polyglot Model Scoring using Apache Apex
Low Latency Polyglot Model Scoring using Apache Apex
 
Stream Data Processing at Big Data Landscape by Oleksandr Fedirko
Stream Data Processing at Big Data Landscape by Oleksandr Fedirko Stream Data Processing at Big Data Landscape by Oleksandr Fedirko
Stream Data Processing at Big Data Landscape by Oleksandr Fedirko
 
Event Detection Pipelines with Apache Kafka
Event Detection Pipelines with Apache KafkaEvent Detection Pipelines with Apache Kafka
Event Detection Pipelines with Apache Kafka
 
Energy efficient AI workload partitioning on multi-core systems
Energy efficient AI workload partitioning on multi-core systemsEnergy efficient AI workload partitioning on multi-core systems
Energy efficient AI workload partitioning on multi-core systems
 
Apache Camel with Spring boot
Apache Camel with Spring bootApache Camel with Spring boot
Apache Camel with Spring boot
 
Apache Camel with Spring boot
Apache Camel with Spring bootApache Camel with Spring boot
Apache Camel with Spring boot
 
Red Hat Open Day JBoss Fuse
Red Hat Open Day JBoss FuseRed Hat Open Day JBoss Fuse
Red Hat Open Day JBoss Fuse
 
Scaling Up Machine Learning Experimentation at Tubi 5x and Beyond
Scaling Up Machine Learning Experimentation at Tubi 5x and BeyondScaling Up Machine Learning Experimentation at Tubi 5x and Beyond
Scaling Up Machine Learning Experimentation at Tubi 5x and Beyond
 
OS for AI: Elastic Microservices & the Next Gen of ML
OS for AI: Elastic Microservices & the Next Gen of MLOS for AI: Elastic Microservices & the Next Gen of ML
OS for AI: Elastic Microservices & the Next Gen of ML
 
AWS Serverless patterns & best-practices in AWS
AWS Serverless  patterns & best-practices in AWSAWS Serverless  patterns & best-practices in AWS
AWS Serverless patterns & best-practices in AWS
 
Your Linux AMI: Optimization and Performance (CPN302) | AWS re:Invent 2013
Your Linux AMI: Optimization and Performance (CPN302) | AWS re:Invent 2013Your Linux AMI: Optimization and Performance (CPN302) | AWS re:Invent 2013
Your Linux AMI: Optimization and Performance (CPN302) | AWS re:Invent 2013
 
Multithreading and Actors
Multithreading and ActorsMultithreading and Actors
Multithreading and Actors
 
Performance Oriented Design
Performance Oriented DesignPerformance Oriented Design
Performance Oriented Design
 
AskTom: How to Make and Test Your Application "Oracle RAC Ready"?
AskTom: How to Make and Test Your Application "Oracle RAC Ready"?AskTom: How to Make and Test Your Application "Oracle RAC Ready"?
AskTom: How to Make and Test Your Application "Oracle RAC Ready"?
 
Amazon Redshift 與 Amazon Redshift Spectrum 幫您建立現代化資料倉儲 (Level 300)
Amazon Redshift 與 Amazon Redshift Spectrum 幫您建立現代化資料倉儲 (Level 300)Amazon Redshift 與 Amazon Redshift Spectrum 幫您建立現代化資料倉儲 (Level 300)
Amazon Redshift 與 Amazon Redshift Spectrum 幫您建立現代化資料倉儲 (Level 300)
 

More from Bilgin Ibryam

Dapr - A 10x Developer Framework for Any Language
Dapr - A 10x Developer Framework for Any LanguageDapr - A 10x Developer Framework for Any Language
Dapr - A 10x Developer Framework for Any LanguageBilgin Ibryam
 
Modernization patterns to refactor a legacy application into event driven mic...
Modernization patterns to refactor a legacy application into event driven mic...Modernization patterns to refactor a legacy application into event driven mic...
Modernization patterns to refactor a legacy application into event driven mic...Bilgin Ibryam
 
Application modernization patterns with apache kafka, debezium, and kubernete...
Application modernization patterns with apache kafka, debezium, and kubernete...Application modernization patterns with apache kafka, debezium, and kubernete...
Application modernization patterns with apache kafka, debezium, and kubernete...Bilgin Ibryam
 
Dual write strategies for microservices
Dual write strategies for microservicesDual write strategies for microservices
Dual write strategies for microservicesBilgin Ibryam
 
How to financially survive while growing a small open source project
How to financially survive while growing a small open source projectHow to financially survive while growing a small open source project
How to financially survive while growing a small open source projectBilgin Ibryam
 
What next after microservices
What next after microservicesWhat next after microservices
What next after microservicesBilgin Ibryam
 
The Evolution of Distributed Systems on Kubernetes
The Evolution of Distributed Systems on KubernetesThe Evolution of Distributed Systems on Kubernetes
The Evolution of Distributed Systems on KubernetesBilgin Ibryam
 
Enterprise Integration for Ethereum
Enterprise Integration for EthereumEnterprise Integration for Ethereum
Enterprise Integration for EthereumBilgin Ibryam
 
The Kubernetes Effect
The Kubernetes EffectThe Kubernetes Effect
The Kubernetes EffectBilgin Ibryam
 
Designing Cloud Native Applications with Kubernetes
Designing Cloud Native Applications with KubernetesDesigning Cloud Native Applications with Kubernetes
Designing Cloud Native Applications with KubernetesBilgin Ibryam
 
Cloud Native Patterns
Cloud Native PatternsCloud Native Patterns
Cloud Native PatternsBilgin Ibryam
 
Cloud Native Java Development Patterns
Cloud Native Java Development PatternsCloud Native Java Development Patterns
Cloud Native Java Development PatternsBilgin Ibryam
 

More from Bilgin Ibryam (12)

Dapr - A 10x Developer Framework for Any Language
Dapr - A 10x Developer Framework for Any LanguageDapr - A 10x Developer Framework for Any Language
Dapr - A 10x Developer Framework for Any Language
 
Modernization patterns to refactor a legacy application into event driven mic...
Modernization patterns to refactor a legacy application into event driven mic...Modernization patterns to refactor a legacy application into event driven mic...
Modernization patterns to refactor a legacy application into event driven mic...
 
Application modernization patterns with apache kafka, debezium, and kubernete...
Application modernization patterns with apache kafka, debezium, and kubernete...Application modernization patterns with apache kafka, debezium, and kubernete...
Application modernization patterns with apache kafka, debezium, and kubernete...
 
Dual write strategies for microservices
Dual write strategies for microservicesDual write strategies for microservices
Dual write strategies for microservices
 
How to financially survive while growing a small open source project
How to financially survive while growing a small open source projectHow to financially survive while growing a small open source project
How to financially survive while growing a small open source project
 
What next after microservices
What next after microservicesWhat next after microservices
What next after microservices
 
The Evolution of Distributed Systems on Kubernetes
The Evolution of Distributed Systems on KubernetesThe Evolution of Distributed Systems on Kubernetes
The Evolution of Distributed Systems on Kubernetes
 
Enterprise Integration for Ethereum
Enterprise Integration for EthereumEnterprise Integration for Ethereum
Enterprise Integration for Ethereum
 
The Kubernetes Effect
The Kubernetes EffectThe Kubernetes Effect
The Kubernetes Effect
 
Designing Cloud Native Applications with Kubernetes
Designing Cloud Native Applications with KubernetesDesigning Cloud Native Applications with Kubernetes
Designing Cloud Native Applications with Kubernetes
 
Cloud Native Patterns
Cloud Native PatternsCloud Native Patterns
Cloud Native Patterns
 
Cloud Native Java Development Patterns
Cloud Native Java Development PatternsCloud Native Java Development Patterns
Cloud Native Java Development Patterns
 

Recently uploaded

Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Clustering techniques data mining book ....
Clustering techniques data mining book ....Clustering techniques data mining book ....
Clustering techniques data mining book ....ShaimaaMohamedGalal
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendArshad QA
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 

Recently uploaded (20)

Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Clustering techniques data mining book ....
Clustering techniques data mining book ....Clustering techniques data mining book ....
Clustering techniques data mining book ....
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and Backend
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 

Camel Desing Patterns Learned Through Blood, Sweat, and Tears

  • 1. Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears June 2016 Bilgin Ibryam @bibryam
  • 2. Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears2 Bilgin Ibryam ● Senior Middleware Architect at Red Hat UK ● Apache Camel Committer and PMC member ● Apache OFBiz Committer and PMC member ● Author of Camel Design Patterns (new) ● Author of Apache Camel Message Routing ● Twitter: @bibryam ● Email: bibryam@gmail.com ● Blog: http://ofbizian.com ● LinkedIn: http://www.linkedin.com/in/bibryam
  • 3. Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears3 Apache Camel Project Status It has all necessary ingredients for a successful open source project. ● Community: 52 committers, 903 users ● Support by large vendors (Red Hat) ● Connectors (256), DataFormats (40) ● Enterprise Integration Patterns++ ● Domain Specific Language ● Ecosystem: Karaf, ActiveMQ, CXF, Fabric, Hawtio, Spring and others ● Monolith, SOA, Microservices, Serverless Source https://www.openhub.net/p/camel/ Stats Date: 06/06/2016
  • 4. Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears4 Application Integration with Camel What do you need to know to create great Camel applications?
  • 5. Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears5 Happy Path Scenarios How Pipes and Filters Pattern looks like in Camel?
  • 6. Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears6 VETRO What is a typical processing flow for a Camel route? ● Validate: validation, schematron, MSV, Jing, bean validation components ● Enrich: enrich and pollEnrich EIPs, custom beans
 ● Transform: Data formats, auto type conversion, templating components ● Route: Message routing EIPs ● Operate: this is the essence of the processing flow

  • 7. Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears7 Edge Component Let's start with a simple Camel route that consumes files
  • 8. Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears8 Edge Component How to expose the same business functionality to multiple consumers?

  • 9. Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears9 Edge Component Encapsulate endpoint-specific details and prevent them from leaking into the business logic of an integration flow.
  • 10. Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears10 Read vs Write Operations How to evolve Read and Write operations independently?
  • 11. Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears11 CQRS This decouples read from write operations to allow them to evolve independently.
  • 12. Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears12 Unhappy Path Scenarios Happy paths are the easy ones. More work is required for designing and implementing the unhappy paths. ● Data Integrity Pattern ● Saga Pattern ● 
Retry Pattern ● Idempotent Filter Pattern ● Circuit Breaker Pattern ● Error Channels Pattern ● Throttling Pattern
  • 13. Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears13 Data Integrity How hard can it be to copy files from one location to another? Download Data Integrity Chapter: http://bit.ly/came-design-patterns-sample
  • 14. Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears14 Data Integrity Transactional systems Local transaction manager Global transaction manager
  • 15. Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears15 Saga How to avoid distributed transactions and ensure data consistency?
  • 16. Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears16 Saga Ensures that each step of the business process has a compensating action to undo the work completed in the case of partial failures.
  • 17. Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears17 Retry To enable applications handle anticipated transient failures by transparently retrying a failed operation with expectation it to be successful. ● Which failures to retry? ● How often to retry? ● Idempotency ● Monitoring ● Timeouts and SLAs
  • 18. Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears18 Retry Camel RedeliveryPolicy ● The most well known retry mechanism in Camel ● Retries only the failing endpoint ● Fully in-memory ● Thread blocking behavior by default ● Can be asynchronous ● Good for small number of quick retries (in milliseconds)
  • 19. Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears19 Retry ActiveMQ consumer RedeliveryPolicy ● Retries the message from the beginning of the Camel route ● Not used very often, but enabled by default ● Fully in-memory ● Thread blocking by default ● Good for small number of quick retries (in milliseconds)
  • 20. Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears20 Retry ActiveMQ Broker Redelivery ● ActiveMQ specific and requires custom logic ● It will consume the message again from a queue ● Persisted at the broker rather than application memory ● Can be clustered and use fail over, load balancing, etc ● Good for long persisted retries (in minutes or hours)
  • 21. Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears21 Circuit Breaker How to guard a system by cascading failures and slow responses from other systems?
  • 22. Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears22 Circuit Breaker Improves the stability and the resilience of a system by guarding integration points from cascading failures and slow responses. Closed state Open state
  • 23. Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears23 Circuit Breaker Improves the stability and the resilience of a system by guarding integration points from cascading failures and slow responses.
  • 24. Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears24 Circuit Breaker Two Circuit Breaker Implementations in Camel 2.18

  • 25. Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears25 Bulkhead How to enforce resource partitioning and damage containment in order to preserve partial functionality in the case of a failure?
  • 26. Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears26 Bulkhead Enforces resource partitioning and damage containment in order to preserve partial functionality in the case of a failure. ● Multi-threaded EIPs: Delayer, Multicast, Recipient List, Splitter, Threads, Throttler, Wire Tap, Polling Consumer, ProducerTemplate, and OnCompletion. ● Async Error Handler ● Circuit Breaker EIP Possible Camel bulkhead points:
  • 27. Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears27 Scalability Scenarios Vertical scaling (performance tuning) ● Endpoints: messaging client buffers, DB client batching, template caching choices ● Concurrent consumers option: Seda, VM, JMS, RabbitMQ, Disruptor, AWS-SQS ● Data types choice: affects content based router, splitter, filter, aggregator ● Multithreading: parallel processing EIPs, threads DSL
 construct, Seda component, asynchronous redelivery/retry ● Micro optimizations: log tuning, camel sampler EIP, disable JMX, disable message history, disable original message record ● Startup/Shutdown: Use lazyLoadTypeConverters for a faster application startup, or configure the shutdownStrategy for a faster shutdown ● Tune: JVM options, networking and operating system Camel performance tuning blog post: http://bit.ly/camel-tuning Camel performance tuning blog post: http://bit.ly/camel-tuning
  • 28. Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears28 Horizontal Scaling Service Instance Pattern for accommodating increasing workloads.
  • 29. Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears29 Service Instance Areas to consider before horizontally scaling a Camel application. ● Service state: load balancer, circuit breaker, resequencer, sampler, throttler, idempotent consumer and aggregator are stateful EIPs! ● Request dispatcher: Messaging, HTTP, file (what about locking?) ● Message ordering: exclusive consumer, message groups, consumer priority, message priority, virtual topics ● Singleton service requirements: for batch jobs, and concurrent polling ● Other resource contention and coupling considerations
  • 30. Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears30 What did we cover so far?
  • 31. Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears31 How patterns are changing? What is happening in the IT industry today? ● Canonical Data Model ● Edge Component ● Reusable Route ● Runtime Reconfiguration ● Singleton Service ● Batch jobs in JVM ● Bounded Context ● Standalone services ● Favor code duplication ● Less configuration, more redeployment ● Container managed singleton ● Container scheduling ● Circuit Breaker, Bulkhead, Health checks..
  • 32. Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears32 Win a print copy of Camel Design Patterns When was the first commit to Apache Camel project done?
  • 33. Apache Camel Design Patterns Learned Through Blood, Sweat, and Tears33 Win a print copy of Camel Design Patterns When was the first commit to Apache Camel project done?
  • 34. More Information Learn more about Apache Camel: http://camel.apache.org Check out Camel Design Patterns: https://leanpub.com/camel-design-patterns Develop Apache Camel based integrations using Red Hat JBoss Fuse: red.ht/FuseDev