SlideShare una empresa de Scribd logo
1 de 13
Descargar para leer sin conexión
Technologie Workshops
Apache Camel
Einleitung: Enterprise Application Integration
                 CORBA

                              System ABC
   System XYZ                                         System 567


 Systemlandschaften aus:
                    RMI
                                                     SOAP
 •System XYZ
    unterschiedlichen System 123
                         System

 • mit unterschiedlichen Schnittstellen                JDBC


 • in unterschiedlichen Technologien
POP3, SMTP         JMS

                    JMS Message             Datei-          DB
  Mail Gateway
                       Broker              system
Messaging
 Entkopplung der Systeme
      Schnittstellen (lose Kopplung)
      Last
 Asynchrone Kommunikation
      Maximaler Durchsatz
      Lastentkopplung, bessere Drosselung
      bedingt offline-fähig
 Ausfallsicherheit (Store and Forward)
 Transaktional
Enterprise Integration Patterns (EIP)
 Pattern-Katalog, Messaging Muster für die Integration von Systemen
 http://www.eaipatterns.com/
 http://camel.apache.org/enterprise-integration-patterns.html
Apche Camel

„Die smarteste Versuchung für
Systemintegration“ JavaMagazin 4/2012, Kai Wähner
 Referenzimplementierung der EIP
API
RouteBuilder#configure(){

    from(EP1).to(EP2);
    from(EP1).bean(myBean, "doSomething");
    from(EP1).process(myProcessor);
    from(EP1).transform(myBean, "doSomething");
    from(EP1).recipientList(simple("direct:${header.operationName}"));
    from(EP1).multicast().to(EP2, EP3,EP4);
    …
}
Spring DSL
<camelContext xmlns="http://camel.apache.org/schema/spring">
  <route>
    <from uri="EP-URI1"/>
    <to uri="EP-URI2"/>
  </route>
</camelContext>


<camelContext xmlns="http://camel.apache.org/schema/spring">
  <route>
    <from uri="EP-URI1"/>
    <to uri="myBean"/>
  </route>
</camelContext>
<bean id="myBean" class="…"/>
Spring DSL
    Transform
<route>
  <from uri="EP-URI1"/>
  <bean ref="myBeanName" method="doTransform"/>
  <to uri="EP-URI2"/>
</route>


<camelContext xmlns="http://camel.apache.org/schema/spring">
  <route>
   <from uri="EP-URI1"/>
   <transform>
     <simple>${in.body} extra data!</simple>
   </transform>
   <to uri="EP-URI2"/>
  </route>
</camelContext>
Spring DSL
    Dynamic Recipient List
<camelContext xmlns="http://camel.apache.org/schema/spring">
  <route>
    <from uri="EP-URI1"/>
      <multicast>
        <to uri="EP-URI2"/>
        <to uri="EP-URI3"/>
        <to uri="EP-URI4"/>
      </multicast>
  </route>
</camelContext>
Spring DSL
    Static Recipient List

<camelContext xmlns="http://camel.apache.org/schema/spring">
  <route>
    <from uri="EP-URI1"/>
    <recipientList>
      <xpath>$foo</xpath>
    </recipientList>
  </route>
  <route>
    <from uri="EP-URI2" />
    <recipientList delimiter=",">
      <header>myHeader</header>
   </recipientList>
  </route>

</camelContext>
Aufgabe Ticketsystem
 Nachrichten per Webservice in das System
 WS-Antwort mit Ticket-ID
 Backup im Filesystem
 Versand per E-Mail
Aufbau
    class Architektur


                                                                 Apache Camel


                                                    camel-cxf                                  camel-mail
                            RouteBuilder

                        +   configure()() : void




                                                                         «interface»                            IncidentMessage
                            IncidentRoute
                                                                       IncidentServ ice
                                                                                                            -     message: String
                        +   configure()() : void          +   addIncident(IncidentMessage) : Integer
                                                                                                            -     priority: Integer




        WS Endpoint erzeugen

        String uri = "cxf:/incindent?serviceClass="+IncidentService.class.getName();

        from(uri)....
Marko Seifert
Public Space Solutions

T-Systems Multimedia Solutions GmbH
Riesaer Straße 5
01129 Dresden

Más contenido relacionado

Destacado

Self Repairing Tree Topology Enabling Content Based Routing In Local Area Ne...
Self Repairing Tree Topology Enabling  Content Based Routing In Local Area Ne...Self Repairing Tree Topology Enabling  Content Based Routing In Local Area Ne...
Self Repairing Tree Topology Enabling Content Based Routing In Local Area Ne...
ncct
 
Tml for Ruby on Rails
Tml for Ruby on RailsTml for Ruby on Rails
Tml for Ruby on Rails
Michael Berkovich
 

Destacado (20)

Integration made easy with Apache Camel
Integration made easy with Apache CamelIntegration made easy with Apache Camel
Integration made easy with Apache Camel
 
Apache camel
Apache camelApache camel
Apache camel
 
Taking Apache Camel For A Ride
Taking Apache Camel For A RideTaking Apache Camel For A Ride
Taking Apache Camel For A Ride
 
«Spring Integration as Integration Patterns Provider»
«Spring Integration as Integration Patterns Provider»«Spring Integration as Integration Patterns Provider»
«Spring Integration as Integration Patterns Provider»
 
Apache Camel Lifecycle
Apache Camel LifecycleApache Camel Lifecycle
Apache Camel Lifecycle
 
Wild Flies and a Camel Java EE Integration Stories
Wild Flies and a Camel Java EE Integration StoriesWild Flies and a Camel Java EE Integration Stories
Wild Flies and a Camel Java EE Integration Stories
 
Apache Camel & The Art of Entreprise Integration
Apache Camel & The Art of Entreprise IntegrationApache Camel & The Art of Entreprise Integration
Apache Camel & The Art of Entreprise Integration
 
Self Repairing Tree Topology Enabling Content Based Routing In Local Area Ne...
Self Repairing Tree Topology Enabling  Content Based Routing In Local Area Ne...Self Repairing Tree Topology Enabling  Content Based Routing In Local Area Ne...
Self Repairing Tree Topology Enabling Content Based Routing In Local Area Ne...
 
Apache Camel
Apache CamelApache Camel
Apache Camel
 
Messaging with Spring Integration
Messaging with Spring IntegrationMessaging with Spring Integration
Messaging with Spring Integration
 
Spring Integration and EIP Introduction
Spring Integration and EIP IntroductionSpring Integration and EIP Introduction
Spring Integration and EIP Introduction
 
Elegant Systems Integration w/ Apache Camel
Elegant Systems Integration w/ Apache CamelElegant Systems Integration w/ Apache Camel
Elegant Systems Integration w/ Apache Camel
 
Consuming External Content and Enriching Content with Apache Camel
Consuming External Content and Enriching Content with Apache CamelConsuming External Content and Enriching Content with Apache Camel
Consuming External Content and Enriching Content with Apache Camel
 
Event Driven Architecture with Apache Camel
Event Driven Architecture with Apache CamelEvent Driven Architecture with Apache Camel
Event Driven Architecture with Apache Camel
 
Tml for Ruby on Rails
Tml for Ruby on RailsTml for Ruby on Rails
Tml for Ruby on Rails
 
Apache Camel - The integration library
Apache Camel - The integration libraryApache Camel - The integration library
Apache Camel - The integration library
 
Integration Patterns With Spring integration
Integration Patterns With Spring integrationIntegration Patterns With Spring integration
Integration Patterns With Spring integration
 
Solving Enterprise Integration with Apache Camel
Solving Enterprise Integration with Apache CamelSolving Enterprise Integration with Apache Camel
Solving Enterprise Integration with Apache Camel
 
Enterprise Integration Patterns with Spring integration!
Enterprise Integration Patterns with Spring integration!Enterprise Integration Patterns with Spring integration!
Enterprise Integration Patterns with Spring integration!
 
Three Key Concepts for Understanding JSR-352: Batch Programming for the Java ...
Three Key Concepts for Understanding JSR-352: Batch Programming for the Java ...Three Key Concepts for Understanding JSR-352: Batch Programming for the Java ...
Three Key Concepts for Understanding JSR-352: Batch Programming for the Java ...
 

Similar a Workshop apache camel

Service-Oriented Integration With Apache ServiceMix
Service-Oriented Integration With Apache ServiceMixService-Oriented Integration With Apache ServiceMix
Service-Oriented Integration With Apache ServiceMix
Bruce Snyder
 
Secure .NET programming
Secure .NET programmingSecure .NET programming
Secure .NET programming
Ante Gulam
 
Scalable and Fault-Tolerant Apps with AWS
Scalable and Fault-Tolerant Apps with AWSScalable and Fault-Tolerant Apps with AWS
Scalable and Fault-Tolerant Apps with AWS
Fernando Rodriguez
 
ApacheCon NA 2010 - Building Apps with Apache Tuscany
ApacheCon NA 2010 - Building Apps with Apache TuscanyApacheCon NA 2010 - Building Apps with Apache Tuscany
ApacheCon NA 2010 - Building Apps with Apache Tuscany
Jean-Sebastien Delfino
 

Similar a Workshop apache camel (20)

Service-Oriented Integration With Apache ServiceMix
Service-Oriented Integration With Apache ServiceMixService-Oriented Integration With Apache ServiceMix
Service-Oriented Integration With Apache ServiceMix
 
Service Oriented Integration with ServiceMix
Service Oriented Integration with ServiceMixService Oriented Integration with ServiceMix
Service Oriented Integration with ServiceMix
 
Hazelcast and MongoDB at Cloud CMS
Hazelcast and MongoDB at Cloud CMSHazelcast and MongoDB at Cloud CMS
Hazelcast and MongoDB at Cloud CMS
 
Storm overview & integration
Storm overview & integrationStorm overview & integration
Storm overview & integration
 
JRuby with Java Code in Data Processing World
JRuby with Java Code in Data Processing WorldJRuby with Java Code in Data Processing World
JRuby with Java Code in Data Processing World
 
Secure .NET programming
Secure .NET programmingSecure .NET programming
Secure .NET programming
 
EIP In Practice
EIP In PracticeEIP In Practice
EIP In Practice
 
Building a Unified Data Pipline in Spark / Apache Sparkを用いたBig Dataパイプラインの統一
Building a Unified Data Pipline in Spark / Apache Sparkを用いたBig Dataパイプラインの統一Building a Unified Data Pipline in Spark / Apache Sparkを用いたBig Dataパイプラインの統一
Building a Unified Data Pipline in Spark / Apache Sparkを用いたBig Dataパイプラインの統一
 
2013 05-openstack-israel-heat
2013 05-openstack-israel-heat2013 05-openstack-israel-heat
2013 05-openstack-israel-heat
 
FOSDEM 2017 - RTC Services With Lua and Kamailio
FOSDEM 2017 - RTC Services With Lua and KamailioFOSDEM 2017 - RTC Services With Lua and Kamailio
FOSDEM 2017 - RTC Services With Lua and Kamailio
 
KrakenJS
KrakenJSKrakenJS
KrakenJS
 
A Tale of Two APIs: Using Spark Streaming In Production
A Tale of Two APIs: Using Spark Streaming In ProductionA Tale of Two APIs: Using Spark Streaming In Production
A Tale of Two APIs: Using Spark Streaming In Production
 
Batteries included: Advantages of an End-to-end solution
Batteries included: Advantages of an End-to-end solutionBatteries included: Advantages of an End-to-end solution
Batteries included: Advantages of an End-to-end solution
 
Toulouse Java User Group
Toulouse Java User GroupToulouse Java User Group
Toulouse Java User Group
 
Scalable and Fault-Tolerant Apps with AWS
Scalable and Fault-Tolerant Apps with AWSScalable and Fault-Tolerant Apps with AWS
Scalable and Fault-Tolerant Apps with AWS
 
Keeping Spark on Track: Productionizing Spark for ETL
Keeping Spark on Track: Productionizing Spark for ETLKeeping Spark on Track: Productionizing Spark for ETL
Keeping Spark on Track: Productionizing Spark for ETL
 
Node.js - async for the rest of us.
Node.js - async for the rest of us.Node.js - async for the rest of us.
Node.js - async for the rest of us.
 
From Zero to Stream Processing
From Zero to Stream ProcessingFrom Zero to Stream Processing
From Zero to Stream Processing
 
Make easier Integration of your services with Fuse Solutions - RedHat 2013
Make easier Integration of your services with Fuse Solutions - RedHat 2013Make easier Integration of your services with Fuse Solutions - RedHat 2013
Make easier Integration of your services with Fuse Solutions - RedHat 2013
 
ApacheCon NA 2010 - Building Apps with Apache Tuscany
ApacheCon NA 2010 - Building Apps with Apache TuscanyApacheCon NA 2010 - Building Apps with Apache Tuscany
ApacheCon NA 2010 - Building Apps with Apache Tuscany
 

Último

Último (20)

Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 

Workshop apache camel

  • 2. Einleitung: Enterprise Application Integration CORBA System ABC System XYZ System 567 Systemlandschaften aus: RMI SOAP •System XYZ unterschiedlichen System 123 System • mit unterschiedlichen Schnittstellen JDBC • in unterschiedlichen Technologien POP3, SMTP JMS JMS Message Datei- DB Mail Gateway Broker system
  • 3. Messaging Entkopplung der Systeme Schnittstellen (lose Kopplung) Last Asynchrone Kommunikation Maximaler Durchsatz Lastentkopplung, bessere Drosselung bedingt offline-fähig Ausfallsicherheit (Store and Forward) Transaktional
  • 4. Enterprise Integration Patterns (EIP) Pattern-Katalog, Messaging Muster für die Integration von Systemen http://www.eaipatterns.com/ http://camel.apache.org/enterprise-integration-patterns.html
  • 5. Apche Camel „Die smarteste Versuchung für Systemintegration“ JavaMagazin 4/2012, Kai Wähner Referenzimplementierung der EIP
  • 6. API RouteBuilder#configure(){ from(EP1).to(EP2); from(EP1).bean(myBean, "doSomething"); from(EP1).process(myProcessor); from(EP1).transform(myBean, "doSomething"); from(EP1).recipientList(simple("direct:${header.operationName}")); from(EP1).multicast().to(EP2, EP3,EP4); … }
  • 7. Spring DSL <camelContext xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="EP-URI1"/> <to uri="EP-URI2"/> </route> </camelContext> <camelContext xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="EP-URI1"/> <to uri="myBean"/> </route> </camelContext> <bean id="myBean" class="…"/>
  • 8. Spring DSL Transform <route> <from uri="EP-URI1"/> <bean ref="myBeanName" method="doTransform"/> <to uri="EP-URI2"/> </route> <camelContext xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="EP-URI1"/> <transform> <simple>${in.body} extra data!</simple> </transform> <to uri="EP-URI2"/> </route> </camelContext>
  • 9. Spring DSL Dynamic Recipient List <camelContext xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="EP-URI1"/> <multicast> <to uri="EP-URI2"/> <to uri="EP-URI3"/> <to uri="EP-URI4"/> </multicast> </route> </camelContext>
  • 10. Spring DSL Static Recipient List <camelContext xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="EP-URI1"/> <recipientList> <xpath>$foo</xpath> </recipientList> </route> <route> <from uri="EP-URI2" /> <recipientList delimiter=","> <header>myHeader</header> </recipientList> </route> </camelContext>
  • 11. Aufgabe Ticketsystem Nachrichten per Webservice in das System WS-Antwort mit Ticket-ID Backup im Filesystem Versand per E-Mail
  • 12. Aufbau class Architektur Apache Camel camel-cxf camel-mail RouteBuilder + configure()() : void «interface» IncidentMessage IncidentRoute IncidentServ ice - message: String + configure()() : void + addIncident(IncidentMessage) : Integer - priority: Integer WS Endpoint erzeugen String uri = "cxf:/incindent?serviceClass="+IncidentService.class.getName(); from(uri)....
  • 13. Marko Seifert Public Space Solutions T-Systems Multimedia Solutions GmbH Riesaer Straße 5 01129 Dresden