SlideShare a Scribd company logo
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?

Recommended for you

Introduction to Docker - 2017
Introduction to Docker - 2017Introduction to Docker - 2017
Introduction to Docker - 2017

This document provides an introduction to Docker and discusses how it helps address challenges in the modern IT landscape. Some key points: - Applications are increasingly being broken up into microservices and deployed across multiple servers and environments, making portability and scalability important. - Docker containers help address these issues by allowing applications to run reliably across different infrastructures through package dependencies and resources together. This improves portability. - Docker provides a platform for building, shipping and running applications. It helps bridge the needs of developers who want fast innovation and operations teams who need security and control.

clouddockerdevops
Docker by Example - Basics
Docker by Example - Basics Docker by Example - Basics
Docker by Example - Basics

Docker has created enormous buzz in the last few years. Docker is a open-source software containerization platform. It provides an ability to package software into standardised units on Docker for software development. In this hands-on introductory session, I introduce the concept of containers, provide an overview of Docker, and take the participants through the steps for installing Docker. The main session involves using Docker CLI (Command Line Interface) - all the concepts such as images, managing containers, and getting useful work done is illustrated step-by-step by running commands.

operating systemsdockercontainerization
CI/CD Tools Universe: The Ultimate List
CI/CD Tools Universe: The Ultimate ListCI/CD Tools Universe: The Ultimate List
CI/CD Tools Universe: The Ultimate List

Navigate the universe of CI/CD tools. As the fastest way to production, the CI/CD pipeline is now mainstream among software companies, forming the backbone of the modern DevOps environment. While DevOps handles the culture aspect, CI/CD focuses on the process and tools. With this guide, we hope to provide a clear overview of the various CI/CD tools categories and give a broad sampling of the various tools that are available.

cicdci/cdcontinuous integration
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?


Recommended for you

Springboot Microservices
Springboot MicroservicesSpringboot Microservices
Springboot Microservices

The document discusses microservices architecture and how to implement it using Spring Boot and Spring Cloud. It describes how microservices address challenges with monolithic architectures like scalability and innovation. It then covers how to create a microservices-based application using Spring Boot, register services with Eureka, communicate between services using RestTemplate and Feign, and load balance with Ribbon.

javagroovyspringboot
Microservices Architecture Part 2 Event Sourcing and Saga
Microservices Architecture Part 2 Event Sourcing and SagaMicroservices Architecture Part 2 Event Sourcing and Saga
Microservices Architecture Part 2 Event Sourcing and Saga

Understand the Microservices Architecture concepts Understand Event Sourcing and CQRS Understanding Domain Driven Design Understanding Functional Reactive Programming Understanding Distributed Transaction Management Understanding Microservices Messaging Setting up Micro services Infrastructure (API Gateway, Service Discovery, Load Balancer, Circuit Breaker) https://github.com/meta-magic/microservice_workshop

microservicesdddevent sourcing
Modern CI/CD Pipeline Using Azure DevOps
Modern CI/CD Pipeline Using Azure DevOpsModern CI/CD Pipeline Using Azure DevOps
Modern CI/CD Pipeline Using Azure DevOps

This presentation by Serhii Abanichev (System Architect, Consultant, GlobalLogic) was delivered at GlobalLogic Kharkiv DevOps TechTalk #1 on October 8, 2019. In this talk were covered: - Full coverage of DevOps with Azure DevOps Services: - Create, test and deploy in any programming language, to any cloud or local environment. - Run concurrently on Linux, macOS, and Windows, deploying containers for individual hosts or Kubernetes. - Azure DevOps Services: a Microsoft solution that replaces dozens of tools ensuring smooth delivery to end users. Event materials: https://www.globallogic.com/ua/events/kharkiv-devops-techtalk-1/

azuredevopsservices
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

Recommended for you

Microservices in Practice
Microservices in PracticeMicroservices in Practice
Microservices in Practice

Presenting key architectural concepts of the Microservices Architecture(MSA) and how you can use those architectural principles in practice.

microservicesoa
Kafka Tutorial - basics of the Kafka streaming platform
Kafka Tutorial - basics of the Kafka streaming platformKafka Tutorial - basics of the Kafka streaming platform
Kafka Tutorial - basics of the Kafka streaming platform

Introduction to Kafka streaming platform. Covers Kafka Architecture with some small examples from the command line. Then we expand on this with a multi-server example. Lastly, we added some simple Java client examples for a Kafka Producer and a Kafka Consumer. We have started to expand on the Java examples to correlate with the design discussion of Kafka. We have also expanded on the Kafka design section and added references.

kafkakafka trainingkafka examples
Leveraging Nexus Repository Manager at the Heart of DevOps
Leveraging Nexus Repository Manager at the Heart of DevOpsLeveraging Nexus Repository Manager at the Heart of DevOps
Leveraging Nexus Repository Manager at the Heart of DevOps

Mike Worthington of Sonatype gave a presentation about leveraging Nexus Repository Manager. He discussed how Nexus can be used at different stages of a software development lifecycle, from a simple caching proxy to improve speed and consistency, to full integration with continuous integration and continuous delivery pipelines to improve quality. Worthington also explained how Nexus can be used to manage software components, enforcing policies on open source usage and alerting on policy violations. He emphasized that the repository is the hub that connects development, testing, and deployment across teams and environments.

open sourcecontinuous integrationnexus
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.

Recommended for you

Quarkus tips, tricks, and techniques
Quarkus tips, tricks, and techniquesQuarkus tips, tricks, and techniques
Quarkus tips, tricks, and techniques

Quarkus offers a great development experience. In this session, I’ll introduce you to the power of Quarkus Live Coding and tools that are useful to developers for debugging, deploying, and testing Quarkus applications.

developerred hat developerred hat
Service discovery with Eureka and Spring Cloud
Service discovery with Eureka and Spring CloudService discovery with Eureka and Spring Cloud
Service discovery with Eureka and Spring Cloud

The document discusses service discovery with Eureka and Spring Cloud. It introduces traditional applications where services have fixed locations versus modern applications where services are dynamic. It explains that service discovery with a service registry like Eureka allows services to find each other and load balance requests. The rest of the document demonstrates configuring Eureka as a service registry and client applications that can discover and consume services registered with Eureka.

spring bootmicroserviceseureka
Micro services Architecture
Micro services ArchitectureMicro services Architecture
Micro services Architecture

The document provides an overview of microservices architecture. It discusses key characteristics of microservices such as each service focusing on a specific business capability, decentralized governance and data management, and infrastructure automation. It also compares microservices to monolithic and SOA architectures. Some design styles enabled by microservices like domain-driven design, event sourcing, and functional reactive programming are also covered at a high level. The document aims to introduce attendees to microservices concepts and architectures.

microservicesdddevent sourcing
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)

Recommended for you

Spring Framework Petclinic sample application
Spring Framework Petclinic sample applicationSpring Framework Petclinic sample application
Spring Framework Petclinic sample application

Spring Petclinic is a sample application that has been designed to show how the Spring Framework can be used to build simple but powerful database-oriented applications. The fork named Spring Framework Petclinic maintains a version both with a plain old Spring Framework configuration and a 3-layer architecture (i.e. presentation --> service --> repository).

junitspring mvcspring data jpa
Optimizing and Profiling Golang Rest Api
Optimizing and Profiling Golang Rest ApiOptimizing and Profiling Golang Rest Api
Optimizing and Profiling Golang Rest Api

This document discusses optimizing and profiling Golang REST APIs. It explains that profiling measures program performance to aid optimization. The steps are to deploy an application, conduct profiling to identify slow code, analyze profiling data using tools like pprof, decide on solutions like using goroutines or caching, test the impact of changes, and repeat until performance goals are met before deployment. Short profiling demos are provided and load testing results show performance improvements from optimization solutions.

golangsoftware developmentsoftware testing
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes Introduction

This document provides an overview of Kubernetes, an open-source system for automating deployment, scaling, and management of containerized applications. It describes Kubernetes' architecture including nodes, pods, replication controllers, services, and networking. It also discusses how to set up Kubernetes environments using Minikube or kubeadm and get started deploying pods and services.

kubernetesk8sdocker
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


Recommended for you

Docker, LinuX Container
Docker, LinuX ContainerDocker, LinuX Container
Docker, LinuX Container

Understanding Docker Container. Create docker images and understand the internals of Linux Containers. Dockerization of AppliFire RAD Platform...

lxcdockerlinux container
Deep Dive into Docker Swarm Mode
Deep Dive into Docker Swarm ModeDeep Dive into Docker Swarm Mode
Deep Dive into Docker Swarm Mode

Since its first 1.12 release on July 2016, Docker Swarm Mode has matured enough as a clustering and scheduling tool for IT administrators and developers who can easily establish and manage a cluster of Docker nodes as a single virtual system. Swarm mode integrates the orchestration capabilities of Docker Swarm into Docker Engine itself and help administrators and developers with the ability to add or subtract container iterations as computing demands change. With sophisticated but easy to implement features like built-in Service Discovery, Routing Mesh, Secrets, declarative service model, scaling of the services, desired state reconciliation, scheduling, filters, multi-host networking model, Load-Balancing, rolling updates etc. Docker 17.06 is all set for production-ready product today. Join me webinar organised by Docker Izmir, to get familiar with the current Swarm Mode capabilities & functionalities across the heterogeneous environments.

Cloud Native Camel Design Patterns
Cloud Native Camel Design PatternsCloud Native Camel Design Patterns
Cloud Native Camel Design Patterns

This document discusses design patterns for running Apache Camel applications on Kubernetes. It begins with an introduction of the presenter and an overview of trends driving cloud native application development. It then discusses what cloud native means and reviews popular container orchestration platforms like Kubernetes, Docker Swarm and Mesos. The remainder of the document focuses on deployment patterns for Camel applications on Kubernetes, including packaging, health checks, configuration, service discovery, circuit breakers and retries.

designpatternscamel
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.

Recommended for you

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

JavaOne 2009 presentation on Enterprise Integration Patterns In Practice by Andreas Egloff and Bruce Snyder

cameleipopenesb
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

Machine learning is being deployed in a growing number of applications which demand real-time, accurate, and robust predictions under heavy serving loads. However, most machine learning frameworks and systems only address model training and not deployment. Clipper is a general-purpose model-serving system that addresses these challenges. Interposing between applications that consume predictions and the machine-learning models that produce predictions, Clipper simplifies the model deployment process by isolating models in their own containers and communicating with them over a lightweight RPC system. This architecture allows models to be deployed for serving in the same runtime environment as that used during training. Further, it provides simple mechanisms for scaling out models to meet increased throughput demands and performing fine-grained physical resource allocation for each model. In this talk, I will provide an overview of the Clipper serving system and then discuss how to get started using Clipper to serve Spark and TensorFlow models in a production serving environment.

deep learningmachine learningdeployment models
Integrating Microservices with Apache Camel
Integrating Microservices with Apache CamelIntegrating Microservices with Apache Camel
Integrating Microservices with Apache Camel

This document provides an overview of integrating microservices with Apache Camel and JBoss Fuse. It introduces Apache Camel as a lightweight integration library that uses enterprise integration patterns and domain-specific languages to define integration "flows" and "routes". It describes how Camel supports features like dynamic routing, REST APIs, backpressure, load balancing, and circuit breakers that are useful for building microservices. The document also introduces JBoss Fuse as a development and runtime platform for microservices that provides tooling, frameworks, management capabilities and container support using technologies like Apache Camel, CXF, ActiveMQ and Karaf.

jboss fuseapache camelmicroservices
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?

Recommended for you

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

The document discusses an upcoming AWS event called "AMAZON EC2 DEEPDIVE AND A SPRINKLE OF AWS COMPUTE" presented by Doron Rogov. The event agenda lists technical sessions on various AWS topics occurring from October 14-23. The presentation will cover choosing Amazon EC2 instances, how performance is characterized for different workloads, how EC2 instances provide flexibility and agility while delivering performance, and how to optimize the EC2 instance experience through various instance types.

floor28awsaws cloud
EIP In Practice
EIP In PracticeEIP In Practice
EIP In Practice

This document provides an overview of enterprise integration patterns (EIPs) and how they are implemented using Apache Camel and Project Fuji frameworks. It discusses core EIP principles like asynchronous messaging for integration. It also describes various EIP implementations like content-based routing, dead letter channels, and message transformation patterns. Code examples are shown using the Java and Spring DSLs for Apache Camel and the DSL and web UI for Project Fuji.

eip integration java apache camel
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

This document discusses challenges in building low-latency machine learning applications and how Apache Apex can help address them. It introduces Apache Apex as a distributed streaming engine and describes how it allows embedding models from frameworks like R, Python, H2O through custom operators. It provides various data and model scoring patterns in Apex like dynamic resource allocation, checkpointing, exactly-once processing to meet SLAs. The document also demonstrates techniques like canary deployment, dormant models, model ensembles through logical overlays on the Apex DAG.

apache apexstreaming analyticsmachine learning
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

Docker Basics
Docker BasicsDocker Basics
Docker Basics
Eueung Mulyana
 
Docker and Go: why did we decide to write Docker in Go?
Docker and Go: why did we decide to write Docker in Go?Docker and Go: why did we decide to write Docker in Go?
Docker and Go: why did we decide to write Docker in Go?
Jérôme Petazzoni
 
Spark on Kubernetes
Spark on KubernetesSpark on Kubernetes
Spark on Kubernetes
datamantra
 
Introduction to Docker - 2017
Introduction to Docker - 2017Introduction to Docker - 2017
Introduction to Docker - 2017
Docker, Inc.
 
Docker by Example - Basics
Docker by Example - Basics Docker by Example - Basics
Docker by Example - Basics
Ganesh Samarthyam
 
CI/CD Tools Universe: The Ultimate List
CI/CD Tools Universe: The Ultimate ListCI/CD Tools Universe: The Ultimate List
CI/CD Tools Universe: The Ultimate List
Plutora
 
Springboot Microservices
Springboot MicroservicesSpringboot Microservices
Springboot Microservices
NexThoughts Technologies
 
Microservices Architecture Part 2 Event Sourcing and Saga
Microservices Architecture Part 2 Event Sourcing and SagaMicroservices Architecture Part 2 Event Sourcing and Saga
Microservices Architecture Part 2 Event Sourcing and Saga
Araf Karsh Hamid
 
Modern CI/CD Pipeline Using Azure DevOps
Modern CI/CD Pipeline Using Azure DevOpsModern CI/CD Pipeline Using Azure DevOps
Modern CI/CD Pipeline Using Azure DevOps
GlobalLogic Ukraine
 
Microservices in Practice
Microservices in PracticeMicroservices in Practice
Microservices in Practice
Kasun Indrasiri
 
Kafka Tutorial - basics of the Kafka streaming platform
Kafka Tutorial - basics of the Kafka streaming platformKafka Tutorial - basics of the Kafka streaming platform
Kafka Tutorial - basics of the Kafka streaming platform
Jean-Paul Azar
 
Leveraging Nexus Repository Manager at the Heart of DevOps
Leveraging Nexus Repository Manager at the Heart of DevOpsLeveraging Nexus Repository Manager at the Heart of DevOps
Leveraging Nexus Repository Manager at the Heart of DevOps
SeniorStoryteller
 
Quarkus tips, tricks, and techniques
Quarkus tips, tricks, and techniquesQuarkus tips, tricks, and techniques
Quarkus tips, tricks, and techniques
Red Hat Developers
 
Service discovery with Eureka and Spring Cloud
Service discovery with Eureka and Spring CloudService discovery with Eureka and Spring Cloud
Service discovery with Eureka and Spring Cloud
Marcelo Serpa
 
Micro services Architecture
Micro services ArchitectureMicro services Architecture
Micro services Architecture
Araf Karsh Hamid
 
Spring Framework Petclinic sample application
Spring Framework Petclinic sample applicationSpring Framework Petclinic sample application
Spring Framework Petclinic sample application
Antoine Rey
 
Optimizing and Profiling Golang Rest Api
Optimizing and Profiling Golang Rest ApiOptimizing and Profiling Golang Rest Api
Optimizing and Profiling Golang Rest Api
Iman Syahputra Situmorang
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes Introduction
Peng Xiao
 
Docker, LinuX Container
Docker, LinuX ContainerDocker, LinuX Container
Docker, LinuX Container
Araf Karsh Hamid
 
Deep Dive into Docker Swarm Mode
Deep Dive into Docker Swarm ModeDeep Dive into Docker Swarm Mode
Deep Dive into Docker Swarm Mode
Ajeet Singh Raina
 

What's hot (20)

Docker Basics
Docker BasicsDocker Basics
Docker Basics
 
Docker and Go: why did we decide to write Docker in Go?
Docker and Go: why did we decide to write Docker in Go?Docker and Go: why did we decide to write Docker in Go?
Docker and Go: why did we decide to write Docker in Go?
 
Spark on Kubernetes
Spark on KubernetesSpark on Kubernetes
Spark on Kubernetes
 
Introduction to Docker - 2017
Introduction to Docker - 2017Introduction to Docker - 2017
Introduction to Docker - 2017
 
Docker by Example - Basics
Docker by Example - Basics Docker by Example - Basics
Docker by Example - Basics
 
CI/CD Tools Universe: The Ultimate List
CI/CD Tools Universe: The Ultimate ListCI/CD Tools Universe: The Ultimate List
CI/CD Tools Universe: The Ultimate List
 
Springboot Microservices
Springboot MicroservicesSpringboot Microservices
Springboot Microservices
 
Microservices Architecture Part 2 Event Sourcing and Saga
Microservices Architecture Part 2 Event Sourcing and SagaMicroservices Architecture Part 2 Event Sourcing and Saga
Microservices Architecture Part 2 Event Sourcing and Saga
 
Modern CI/CD Pipeline Using Azure DevOps
Modern CI/CD Pipeline Using Azure DevOpsModern CI/CD Pipeline Using Azure DevOps
Modern CI/CD Pipeline Using Azure DevOps
 
Microservices in Practice
Microservices in PracticeMicroservices in Practice
Microservices in Practice
 
Kafka Tutorial - basics of the Kafka streaming platform
Kafka Tutorial - basics of the Kafka streaming platformKafka Tutorial - basics of the Kafka streaming platform
Kafka Tutorial - basics of the Kafka streaming platform
 
Leveraging Nexus Repository Manager at the Heart of DevOps
Leveraging Nexus Repository Manager at the Heart of DevOpsLeveraging Nexus Repository Manager at the Heart of DevOps
Leveraging Nexus Repository Manager at the Heart of DevOps
 
Quarkus tips, tricks, and techniques
Quarkus tips, tricks, and techniquesQuarkus tips, tricks, and techniques
Quarkus tips, tricks, and techniques
 
Service discovery with Eureka and Spring Cloud
Service discovery with Eureka and Spring CloudService discovery with Eureka and Spring Cloud
Service discovery with Eureka and Spring Cloud
 
Micro services Architecture
Micro services ArchitectureMicro services Architecture
Micro services Architecture
 
Spring Framework Petclinic sample application
Spring Framework Petclinic sample applicationSpring Framework Petclinic sample application
Spring Framework Petclinic sample application
 
Optimizing and Profiling Golang Rest Api
Optimizing and Profiling Golang Rest ApiOptimizing and Profiling Golang Rest Api
Optimizing and Profiling Golang Rest Api
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes Introduction
 
Docker, LinuX Container
Docker, LinuX ContainerDocker, LinuX Container
Docker, LinuX Container
 
Deep Dive into Docker Swarm Mode
Deep Dive into Docker Swarm ModeDeep Dive into Docker Swarm Mode
Deep Dive into Docker Swarm Mode
 

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 Patterns
Bilgin 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 Practice
aegloff
 
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
Databricks
 
Integrating Microservices with Apache Camel
Integrating Microservices with Apache CamelIntegrating Microservices with Apache Camel
Integrating Microservices with Apache Camel
Christian Posta
 
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
Amazon Web Services
 
EIP In Practice
EIP In PracticeEIP In Practice
EIP In Practice
Bruce Snyder
 
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
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
GlobalLogic Ukraine
 
Event Detection Pipelines with Apache Kafka
Event Detection Pipelines with Apache KafkaEvent Detection Pipelines with Apache Kafka
Event Detection Pipelines with Apache Kafka
DataWorks 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 systems
Deepak Shankar
 
Apache Camel with Spring boot
Apache Camel with Spring bootApache Camel with Spring boot
Apache Camel with Spring boot
Knoldus Inc.
 
Apache Camel with Spring boot
Apache Camel with Spring bootApache Camel with Spring boot
Apache Camel with Spring boot
Knoldus Inc.
 
Red Hat Open Day JBoss Fuse
Red Hat Open Day JBoss FuseRed Hat Open Day JBoss Fuse
Red Hat Open Day JBoss Fuse
Adrian 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 Beyond
ScyllaDB
 
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
Nordic 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 AWS
Dima Pasko
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
Zilliz
 
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
Amazon Web Services
 
Multithreading and Actors
Multithreading and ActorsMultithreading and Actors
Multithreading and Actors
Diego Pacheco
 
Performance Oriented Design
Performance Oriented DesignPerformance Oriented Design
Performance Oriented Design
Rodrigo Campos
 

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
 
Integrating Microservices with Apache Camel
Integrating Microservices with Apache CamelIntegrating Microservices with Apache Camel
Integrating Microservices with Apache Camel
 
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
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
 
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
 

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 Language
Bilgin 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 microservices
Bilgin 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 project
Bilgin Ibryam
 
What next after microservices
What next after microservicesWhat next after microservices
What next after microservices
Bilgin 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 Kubernetes
Bilgin Ibryam
 
Enterprise Integration for Ethereum
Enterprise Integration for EthereumEnterprise Integration for Ethereum
Enterprise Integration for Ethereum
Bilgin Ibryam
 
The Kubernetes Effect
The Kubernetes EffectThe Kubernetes Effect
The Kubernetes Effect
Bilgin Ibryam
 
Designing Cloud Native Applications with Kubernetes
Designing Cloud Native Applications with KubernetesDesigning Cloud Native Applications with Kubernetes
Designing Cloud Native Applications with Kubernetes
Bilgin Ibryam
 
Cloud Native Patterns
Cloud Native PatternsCloud Native Patterns
Cloud Native Patterns
Bilgin Ibryam
 
Cloud Native Java Development Patterns
Cloud Native Java Development PatternsCloud Native Java Development Patterns
Cloud Native Java Development Patterns
Bilgin 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

AWS Cloud Practitioner Essentials (Second Edition) (Arabic) AWS Security .pdf
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) AWS Security .pdfAWS Cloud Practitioner Essentials (Second Edition) (Arabic) AWS Security .pdf
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) AWS Security .pdf
karim wahed
 
WEBINAR SLIDES: CCX for Cloud Service Providers
WEBINAR SLIDES: CCX for Cloud Service ProvidersWEBINAR SLIDES: CCX for Cloud Service Providers
WEBINAR SLIDES: CCX for Cloud Service Providers
Severalnines
 
Safe Work Permit Management Software for Hot Work Permits
Safe Work Permit Management Software for Hot Work PermitsSafe Work Permit Management Software for Hot Work Permits
Safe Work Permit Management Software for Hot Work Permits
sheqnetworkmarketing
 
Prada Group Reports Strong Growth in First Quarter …
Prada Group Reports Strong Growth in First Quarter …Prada Group Reports Strong Growth in First Quarter …
Prada Group Reports Strong Growth in First Quarter …
908dutch
 
What is OCR Technology and How to Extract Text from Any Image for Free
What is OCR Technology and How to Extract Text from Any Image for FreeWhat is OCR Technology and How to Extract Text from Any Image for Free
What is OCR Technology and How to Extract Text from Any Image for Free
TwisterTools
 
React vs Next js: Which is Better for Web Development? - Semiosis Software Pr...
React vs Next js: Which is Better for Web Development? - Semiosis Software Pr...React vs Next js: Which is Better for Web Development? - Semiosis Software Pr...
React vs Next js: Which is Better for Web Development? - Semiosis Software Pr...
Semiosis Software Private Limited
 
Leading Project Management Tool Taskruop.pptx
Leading Project Management Tool Taskruop.pptxLeading Project Management Tool Taskruop.pptx
Leading Project Management Tool Taskruop.pptx
taskroupseo
 
React Native vs Flutter - SSTech System
React Native vs Flutter  - SSTech SystemReact Native vs Flutter  - SSTech System
React Native vs Flutter - SSTech System
SSTech System
 
Cultural Shifts: Embracing DevOps for Organizational Transformation
Cultural Shifts: Embracing DevOps for Organizational TransformationCultural Shifts: Embracing DevOps for Organizational Transformation
Cultural Shifts: Embracing DevOps for Organizational Transformation
Mindfire Solution
 
MVP Mobile Application - Codearrest.pptx
MVP Mobile Application - Codearrest.pptxMVP Mobile Application - Codearrest.pptx
MVP Mobile Application - Codearrest.pptx
Mitchell Marsh
 
Attendance Tracking From Paper To Digital
Attendance Tracking From Paper To DigitalAttendance Tracking From Paper To Digital
Attendance Tracking From Paper To Digital
Task Tracker
 
Splunk_Remote_Work_Insights_Overview.pptx
Splunk_Remote_Work_Insights_Overview.pptxSplunk_Remote_Work_Insights_Overview.pptx
Splunk_Remote_Work_Insights_Overview.pptx
sudsdeep
 
一比一原版英国牛津大学毕业证(oxon毕业证书)如何办理
一比一原版英国牛津大学毕业证(oxon毕业证书)如何办理一比一原版英国牛津大学毕业证(oxon毕业证书)如何办理
一比一原版英国牛津大学毕业证(oxon毕业证书)如何办理
avufu
 
Addressing the Top 9 User Pain Points with Visual Design Elements.pptx
Addressing the Top 9 User Pain Points with Visual Design Elements.pptxAddressing the Top 9 User Pain Points with Visual Design Elements.pptx
Addressing the Top 9 User Pain Points with Visual Design Elements.pptx
Sparity1
 
Overview of ERP - Mechlin Technologies.pptx
Overview of ERP - Mechlin Technologies.pptxOverview of ERP - Mechlin Technologies.pptx
Overview of ERP - Mechlin Technologies.pptx
Mitchell Marsh
 
Folding Cheat Sheet #7 - seventh in a series
Folding Cheat Sheet #7 - seventh in a seriesFolding Cheat Sheet #7 - seventh in a series
Folding Cheat Sheet #7 - seventh in a series
Philip Schwarz
 
ANSYS Mechanical APDL Introductory Tutorials.pdf
ANSYS Mechanical APDL Introductory Tutorials.pdfANSYS Mechanical APDL Introductory Tutorials.pdf
ANSYS Mechanical APDL Introductory Tutorials.pdf
sachin chaurasia
 
ENISA Threat Landscape 2023 documentation
ENISA Threat Landscape 2023 documentationENISA Threat Landscape 2023 documentation
ENISA Threat Landscape 2023 documentation
sofiafernandezon
 
Google ML-Kit - Understanding on-device machine learning
Google ML-Kit - Understanding on-device machine learningGoogle ML-Kit - Understanding on-device machine learning
Google ML-Kit - Understanding on-device machine learning
VishrutGoyani1
 
dachnug51 - All you ever wanted to know about domino licensing.pdf
dachnug51 - All you ever wanted to know about domino licensing.pdfdachnug51 - All you ever wanted to know about domino licensing.pdf
dachnug51 - All you ever wanted to know about domino licensing.pdf
DNUG e.V.
 

Recently uploaded (20)

AWS Cloud Practitioner Essentials (Second Edition) (Arabic) AWS Security .pdf
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) AWS Security .pdfAWS Cloud Practitioner Essentials (Second Edition) (Arabic) AWS Security .pdf
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) AWS Security .pdf
 
WEBINAR SLIDES: CCX for Cloud Service Providers
WEBINAR SLIDES: CCX for Cloud Service ProvidersWEBINAR SLIDES: CCX for Cloud Service Providers
WEBINAR SLIDES: CCX for Cloud Service Providers
 
Safe Work Permit Management Software for Hot Work Permits
Safe Work Permit Management Software for Hot Work PermitsSafe Work Permit Management Software for Hot Work Permits
Safe Work Permit Management Software for Hot Work Permits
 
Prada Group Reports Strong Growth in First Quarter …
Prada Group Reports Strong Growth in First Quarter …Prada Group Reports Strong Growth in First Quarter …
Prada Group Reports Strong Growth in First Quarter …
 
What is OCR Technology and How to Extract Text from Any Image for Free
What is OCR Technology and How to Extract Text from Any Image for FreeWhat is OCR Technology and How to Extract Text from Any Image for Free
What is OCR Technology and How to Extract Text from Any Image for Free
 
React vs Next js: Which is Better for Web Development? - Semiosis Software Pr...
React vs Next js: Which is Better for Web Development? - Semiosis Software Pr...React vs Next js: Which is Better for Web Development? - Semiosis Software Pr...
React vs Next js: Which is Better for Web Development? - Semiosis Software Pr...
 
Leading Project Management Tool Taskruop.pptx
Leading Project Management Tool Taskruop.pptxLeading Project Management Tool Taskruop.pptx
Leading Project Management Tool Taskruop.pptx
 
React Native vs Flutter - SSTech System
React Native vs Flutter  - SSTech SystemReact Native vs Flutter  - SSTech System
React Native vs Flutter - SSTech System
 
Cultural Shifts: Embracing DevOps for Organizational Transformation
Cultural Shifts: Embracing DevOps for Organizational TransformationCultural Shifts: Embracing DevOps for Organizational Transformation
Cultural Shifts: Embracing DevOps for Organizational Transformation
 
MVP Mobile Application - Codearrest.pptx
MVP Mobile Application - Codearrest.pptxMVP Mobile Application - Codearrest.pptx
MVP Mobile Application - Codearrest.pptx
 
Attendance Tracking From Paper To Digital
Attendance Tracking From Paper To DigitalAttendance Tracking From Paper To Digital
Attendance Tracking From Paper To Digital
 
Splunk_Remote_Work_Insights_Overview.pptx
Splunk_Remote_Work_Insights_Overview.pptxSplunk_Remote_Work_Insights_Overview.pptx
Splunk_Remote_Work_Insights_Overview.pptx
 
一比一原版英国牛津大学毕业证(oxon毕业证书)如何办理
一比一原版英国牛津大学毕业证(oxon毕业证书)如何办理一比一原版英国牛津大学毕业证(oxon毕业证书)如何办理
一比一原版英国牛津大学毕业证(oxon毕业证书)如何办理
 
Addressing the Top 9 User Pain Points with Visual Design Elements.pptx
Addressing the Top 9 User Pain Points with Visual Design Elements.pptxAddressing the Top 9 User Pain Points with Visual Design Elements.pptx
Addressing the Top 9 User Pain Points with Visual Design Elements.pptx
 
Overview of ERP - Mechlin Technologies.pptx
Overview of ERP - Mechlin Technologies.pptxOverview of ERP - Mechlin Technologies.pptx
Overview of ERP - Mechlin Technologies.pptx
 
Folding Cheat Sheet #7 - seventh in a series
Folding Cheat Sheet #7 - seventh in a seriesFolding Cheat Sheet #7 - seventh in a series
Folding Cheat Sheet #7 - seventh in a series
 
ANSYS Mechanical APDL Introductory Tutorials.pdf
ANSYS Mechanical APDL Introductory Tutorials.pdfANSYS Mechanical APDL Introductory Tutorials.pdf
ANSYS Mechanical APDL Introductory Tutorials.pdf
 
ENISA Threat Landscape 2023 documentation
ENISA Threat Landscape 2023 documentationENISA Threat Landscape 2023 documentation
ENISA Threat Landscape 2023 documentation
 
Google ML-Kit - Understanding on-device machine learning
Google ML-Kit - Understanding on-device machine learningGoogle ML-Kit - Understanding on-device machine learning
Google ML-Kit - Understanding on-device machine learning
 
dachnug51 - All you ever wanted to know about domino licensing.pdf
dachnug51 - All you ever wanted to know about domino licensing.pdfdachnug51 - All you ever wanted to know about domino licensing.pdf
dachnug51 - All you ever wanted to know about domino licensing.pdf
 

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