APACHE CAMEL INTRO JOSEF LUDVÍČEK, 26. 2. 2015 BP AUTOMATICKÉ ZAKLÁDÁNÍ PRACOVNÍCH POSTUPŮ Z E-MAILŮ dostupné z cíl: zjednodušit zakládání procesů v systému MAP java -jar router-1.0-SNAPSHOT.jar monitorování pomocí webové konzole IS MU Hawt.io "Proces je po částech uspořádaná množina činností, jež na základě jednoho nebo více vstupů tvoří opakovatelným způsobem požadovaný výstup." Bonita BPM POUŽITÍ CAMEL APLIKACE Naskenováním dokumentu dojde k zahájení procesu z kancelářských tiskáren lze odesílat skeny e-mailem Operátor přesunutím e-mailu zahájí proces APACHE CAMEL oficiální web kniha Camel in Action, ( ) kapitola 3 camel.apache.org Manning Publications zmíněné bakalářské práce OSNOVA koncept cesty Camel DSL transformace přenášených dat Camel & Spring Camel komponenty chybové řízení produkční nasazení Camel aplikace monitorování KONCEPT CESTY posloupnost operací nad přenášenými daty ZÁPIS CESTY Java DSL f r o m ( " i m a p s : / / i m a p . g m a i l . c o m ? " + " u s e r n a m e = L O G I N & p a s s w o r d = P A S S W O R D & " + " d e l e t e = f a l s e & u n s e e n = t r u e " ) . i d ( " g m a i l - t o - f i l e " ) . s e t H e a d e r ( " C a m e l F i l e N a m e " ) . g r o o v y ( " r e s o u r c e : c l a s s p a t h : s c r i p t . g r o o v y " ) . c o n v e r t B o d y T o ( S t r i n g . c l a s s ) . c h o i c e ( ) . w h e n ( h e a d e r ( " s e n d e r " ) . c o n t a i n s ( " @ m a i l . m u n i . c z " ) ) . t o ( " l a n g u a g e : / / p y t h o n : r e s o u r c e : c l a s s p a t h : i s _ m u n i . p y " ) . t o ( " f i l e : f i l e s " ) . o t h e r w i s e ( ) . t o ( " f i l e : f i l e s " ) ; Spring DSL < c a m e l : r o u t e i d = " g m a i l - t o - f i l e " > < c a m e l : f r o m u r i = " i m a p s : / / i m a p . g m a i l . c o m ? u s e r n a m e = L O G I N & a m p ; p a s s w o r d = P A S S W O R D & a m p ; d e l e t e = f a l s e & a m p ; u n s e e n = t r u e " / > < c a m e l : s e t H e a d e r h e a d e r N a m e = " C a m e l F i l e N a m e " > < c a m e l : g r o o v y > r e s o u r c e : c l a s s p a t h : s c r i p t . g r o o v y < / c a m e l : g r o o v y > < / c a m e l : s e t H e a d e r > < c a m e l : c o n v e r t B o d y T o t y p e = " j a v a . l a n g . S t r i n g " / > < c a m e l : c h o i c e > < c a m e l : w h e n > < c a m e l : s i m p l e > $ { h e a d e r . s e n d e r } c o n t a i n s ' @ m a i l . m u n i . c z ' < / c a m e l : s i m p l e > < c a m e l : t o u r i = " l a n g u a g e : / / p y t h o n : r e s o u r c e : c l a s s p a t h : i s _ m u n i . p y " / > < c a m e l : t o u r i = " f i l e : f i l e s " / > < / c a m e l : w h e n > < c a m e l : o t h e r w i s e > < c a m e l : t o u r i = " f i l e : f i l e s " / > < / c a m e l : o t h e r w i s e > < / c a m e l : c h o i c e > < / c a m e l : r o u t e > CAMEL A SPRING FRAMEWORK < b e a n i d = " a m q " c l a s s = " o r g . a p a c h e . a c t i v e m q . c a m e l . c o m p o n e n t . A c t i v e M Q C o m p o n e n t " > < p r o p e r t y n a m e = " b r o k e r U R L " v a l u e = " t c p : / / l o c a l h o s t : 6 1 6 1 6 " / > < p r o p e r t y n a m e = " u s e r N a m e " v a l u e = " j a c k " / > < p r o p e r t y n a m e = " p a s s w o r d " v a l u e = " s p a r r o w " / > < / b e a n > < ! - - s e n d m e s s a g e t o A c t i v e M Q i n C a m e l R o u t e - - > < t o u r i = " a m q : q u e u e : T E S T . F O O " / > ActiveMQ Hello World Zasílání zpráv z obyčejné třídy ( ).Bean Binding i m p o r t o r g . a p a c h e . c a m e l . E n d p o i n t I n j e c t ; i m p o r t o r g . a p a c h e . c a m e l . P r o d u c e r T e m p l a t e ; p u b l i c c l a s s S o m e C l a s s { @ E n d p o i n t I n j e c t ( u r i = " a m q : q u e u e : T E S T . F O O " ) P r o d u c e r T e m p l a t e t e m p l a t e ; p u b l i c v o i d s e n d M e s s a g e ( S t r i n g m e s s a g e ) { t e m p l a t e . s e n d B o d y ( m e s s a g e ) ; } } Volání Java třídy z camel cesty f r o m ( " d i r e c t : s o m e t h i n g " ) . b e a n ( S o m e C l a s s . c l a s s ) ; CAMEL KOMPONENTY camel.apache.org/components CHYBOVÉ ŘÍZENÍ < c a m e l : e r r o r H a n d l e r i d = " d e a d E H " t y p e = " D e a d L e t t e r C h a n n e l " d e a d L e t t e r U r i = " f i l e : p r o b l e m a t i c " > < c a m e l : r e d e l i v e r y P o l i c y m a x i m u m R e d e l i v e r i e s = " 1 0 " l o g S t a c k T r a c e = " t r u e " l o g H a n d l e d = " t r u e " d e l a y P a t t e r n = " 1 : 1 0 0 0 ; 5 : 5 0 0 0 ; 1 0 : 2 0 0 0 0 " r e t r y A t t e m p t e d L o g L e v e l = " W A R N " r e t r i e s E x h a u s t e d L o g L e v e l = " E R R O R " / > < / c a m e l : e r r o r H a n d l e r > < o n E x c e p t i o n > < e x c e p t i o n > j a v a . i o . I O E x c e p t i o n < / e x c e p t i o n > < h a n d l e d > < c o n s t a n t > t r u e < / c o n s t a n t > < / h a n d l e d > < / o n E x c e p t i o n > PRODUKČNÍ NASAZENÍ spustitelná aplikace java -jar app.jar Spring Boot webový kontejner / aplikační server JBoss Wildfly Apache Tomcat OSGI kontejner JBoss Fuse Apache Karaf MONITOROVÁNÍ JConsole Webová konzole Hawt.io DEMO ? Josef Ludvíček is.muni.cz/auth/osoba/ludvicek ludvicek@mail.muni.cz