Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Wasser in der Wüste

Wasser in der Wüste

Vom custom-made SQL-DB-Messaging Antipattern zum JMS-Standard mit Apache Camel (und Oracle AQ)

Demo Sourcecode: https://github.com/dasniko/public

Niko Köbler

November 20, 2012
Tweet

More Decks by Niko Köbler

Other Decks in Programming

Transcript

  1. Niko Köbler • Freiberuflicher Berater/Architekt • IT seit 1999 e:

    [email protected] w: www.n-k.de nikokoebler.blogspot.com t: @dasniko Wasser in der Wüste, Niko Köbler 2
  2. Herausforderung Wasser in der Wüste, Niko Köbler 3 Oracle DB

    IBM AS/400 DB/400 PL/SQL JEE Container JDBC File File SQL JDBC
  3. Der Weg I • IBM Websphere MQ ??? • Oracle

    SOA-Suite ??? • JMS! • Lose Kopplung • Asynchrone Übertragung • Queues (point-to-point) vs. Topics (publish-subscribe) Wasser in der Wüste, Niko Köbler 4 NO!
  4. Oracle AQ • JMS-Provider „built-in“ • Seit Version 9i Release

    2 „Advanced Queuing“ • Auch in XE! • Robust, stabil, etabliert • Datenbanktabellen / -user • Nutzbar über PL/SQL-Packages oder JMS-Adapter • Kein weiteres System notwendig Wasser in der Wüste, Niko Köbler 5
  5. Der Weg II • Spring Integration • Mule ESB /

    Mule Integration • Apache Camel Wasser in der Wüste, Niko Köbler 6
  6. Was ist Apache Camel? „Apache Camel is messaging technology glue

    with routing. It joins together messaging start and end points allowing the transference of messages from different sources to different destinations.“ „It‘s a complete production-ready framework for people who want to implement their solotuion to follow the EIPs.“ Quelle: http://stackoverflow.com/questions/8845186/what-exactly-is-apache-camel Wasser in der Wüste, Niko Köbler 7
  7. Apache Camel • EIP Open Source Framework • leichtgewichtig •

    Implementiert in Java • Routing / Mediation / Transformation • DSLs: Java, XML, Scala • Pipes&Filters, Bean Binding • Testbar (Unit-Tests) • Apache Projekte, die Camel verwenden: o ServiceMix o ActiveMQ o … Wasser in der Wüste, Niko Köbler 8
  8. Apache Camel Components • GAuth, GMail, … • HBase •

    HDFS • HTTP • iBatis • IRC • JDBC • JMS • JMX • JPA Wasser in der Wüste, Niko Köbler 12 • Atom • Amazon WS • Bean / Bean Validation • Crypto • CXF (SOAP) • Direct, Seda, Mock • EJB • File • Freemarker • FTP
  9. Apache Camel Components • RSS • Solr • SpringBatch, -Integration

    • SQL • SSH • StAX • TCP • Twitter • XQuery • XSLT Wasser in der Wüste, Niko Köbler 13 • JT400 • LDAP • Log • Lucene • Mail (IMAP, POP3, SMTP) • MongoDB • Nagios • Printer • REST • RMI
  10. Enterprise Integration Patterns • Gregor Hohpe & Bobby Woolf •

    Designing, Building and Deploying Messaging Solutions • 65 Patterns o (einfache) Lösungen und Ansätze für verschiedene bzw. alle Integrations-Werkzeuge o „Gemeinsame Sprache“ und visuelle Notation • If you are involved with the operation or development of an enterprise application, there will doubtless come a time when you will need to integrate your application with another using the emerging preferred approach of messaging. When that time comes, this book will be your most valuable reference. (Randy Stafford, Oracle) Wasser in der Wüste, Niko Köbler 14
  11. Ziel-Architektur Wasser in der Wüste, Niko Köbler 15 Oracle DB

    IBM AS/400 DB/400 PL/SQL JT400 DTAQ JEE Container AQ Apache Camel JMS JMS JMS JDBC SQL JPA
  12. Ziel-Routing Wasser in der Wüste, Niko Köbler 16 Route1 Route2

    Route3 Route4 Transformation, Unmarshalling, Splitting Endpoint-Input Content-Based- Routing XML- Marshalling JMS-Queue Entity- Transformation Persistenz
  13. Q&A

  14. Links • Oracle AQ: http://en.wikipedia.org/wiki/Oracle_Advanced_Queuing • JMS: http://de.wikipedia.org/wiki/Java_Message_Service • Apache

    Camel: http://camel.apache.org • Spring Integration: http://www.springsource.org/spring-integration • Mule ESB: http://www.mulesoft.org • EAI Patterns: http://www.eaipatterns.com • JT400: http://jt400.sourceforge.net Wasser in der Wüste, Niko Köbler 19