Servicemix 4 Camel ActiveMQ [email_address]
Servicemix 4 <ul><li>Modularna szyna ESB
Komponenty: </li><ul><li>Karaf – jądro
NMR – router wiadomości
Implementacja JBI
Komponenty: </li><ul><li>Http, CXF
Camel, Drools
File, JMS
... </li></ul></ul></ul>
Servicemix 4 - architektura Felix Karaf Servicemix NMR ActiveMQ JBI Camel NMR CXF NMR Komponenty SMX  (Drools, Http, Jms, ...
Felix Karaf – cechy <ul><li>Podprojekt Felix </li><ul><li>Poprzednio Servicemix Kernel
Działa także z Equinox </li></ul><li>Łatwo rozszerzalna konsola </li><ul><li>Wbudowane moduły OSGI, konfiguracji, podstawo...
Możliwość dostępu przez ssh </li></ul><li>Wsparcie dla OSGI 4.2 </li><ul><li>Blueprint / Spring DM </li></ul><li>Konfigura...
Felix Karaf – instalacja i konfiguracja <ul><li>Hotdeployment
Instalacja artefaktów w różnych formach </li><ul><li>Wiązki OSGI
Konteksty aplikacji Spring
War, JBI, ... </li></ul><li>Konfiguracja aplikacji przez ConfigurationAdmin OSGI Compendium  + pliki .properties
Ułatwiona instalacja aplikacji – features </li><ul><li>Wiązki OSGI + konfiguracja
Jak w Eclipse ;) </li></ul></ul>
JBI <ul><li>Definicja architektury kontenera SOA
Upcoming SlideShare
Loading in …5
×

Smx + Camel - Maciek Próchniak

1,900 views

Published on

Published in: Technology, Education
  • Be the first to comment

Smx + Camel - Maciek Próchniak

  1. 1. Servicemix 4 Camel ActiveMQ [email_address]
  2. 2. Servicemix 4 <ul><li>Modularna szyna ESB
  3. 3. Komponenty: </li><ul><li>Karaf – jądro
  4. 4. NMR – router wiadomości
  5. 5. Implementacja JBI
  6. 6. Komponenty: </li><ul><li>Http, CXF
  7. 7. Camel, Drools
  8. 8. File, JMS
  9. 9. ... </li></ul></ul></ul>
  10. 10. Servicemix 4 - architektura Felix Karaf Servicemix NMR ActiveMQ JBI Camel NMR CXF NMR Komponenty SMX (Drools, Http, Jms, ...)
  11. 11. Felix Karaf – cechy <ul><li>Podprojekt Felix </li><ul><li>Poprzednio Servicemix Kernel
  12. 12. Działa także z Equinox </li></ul><li>Łatwo rozszerzalna konsola </li><ul><li>Wbudowane moduły OSGI, konfiguracji, podstawowych funkcji shella (grep :))
  13. 13. Możliwość dostępu przez ssh </li></ul><li>Wsparcie dla OSGI 4.2 </li><ul><li>Blueprint / Spring DM </li></ul><li>Konfiguracja logowania przez Pax Logging </li></ul>
  14. 14. Felix Karaf – instalacja i konfiguracja <ul><li>Hotdeployment
  15. 15. Instalacja artefaktów w różnych formach </li><ul><li>Wiązki OSGI
  16. 16. Konteksty aplikacji Spring
  17. 17. War, JBI, ... </li></ul><li>Konfiguracja aplikacji przez ConfigurationAdmin OSGI Compendium + pliki .properties
  18. 18. Ułatwiona instalacja aplikacji – features </li><ul><li>Wiązki OSGI + konfiguracja
  19. 19. Jak w Eclipse ;) </li></ul></ul>
  20. 20. JBI <ul><li>Definicja architektury kontenera SOA
  21. 21. Wymiana wiadomości XML oparta na WSDL 2.0
  22. 22. Centralna szyna danych – NMR
  23. 23. Komponenty </li><ul><li>BC (Binding Component) – łączące (np. http, jms)
  24. 24. SE (Service Engine)– przetwarzające (np. BPEL, drools, camel) </li></ul><li>Rodzaje artefaktów </li><ul><li>SA (Service Assembly) - zestaw SU
  25. 25. SU (Service Unit) – serwisy dla danego komponentu </li></ul><li>JBI 2.0 – chyba już zarzucona... </li></ul>
  26. 26. JBI - schemat
  27. 27. JBI – zalety i wady <ul><li>Zalety </li><ul><li>Spójny standard wymiany informacji
  28. 28. Elastyczna definicja szyny danych NMR </li></ul><li>Wady </li><ul><li>Duże problemy z ładowaniem klas
  29. 29. Skomplikowana struktura artefaktów </li><ul><li>Sztywny podział na SU </li></ul><li>Komponenty są dość skomplikowane w tworzeniu i obsłudze </li></ul></ul>
  30. 30. NMR w SMX 4 <ul><li>Wydzielenie NMR </li><ul><li>Przykład: Camel NMR, CXF NMR </li></ul><li>Uproszczenie API </li><ul><li>Do prostych zastosowań nie trzeba pełnego JBI </li></ul><li>Możliwość dodawania listenerów
  31. 31. Obsługa wiadomości XML oraz POJO
  32. 32. Transakcyjność </li><ul><li>Dostęp do menedżera transakcji poprzez serwis OSGI
  33. 33. Transakcyjność wymian wiadomości poprzez zastosowanie endpointów JMS </li></ul></ul>
  34. 34. JBI w SMX4 <ul><li>Dodatkowa warstwa „nad” NMR
  35. 35. Pełne wsparcie artefaktów JBI
  36. 36. Możliwość instalacji wiązek OSGI wystawiających endpointy JBI </li><ul><li>Jeden XML – wiele komponentów
  37. 37. Technicznie konwersja każdego endpointu do oddzielnego SU
  38. 38. Czasami jeszcze nie do końca stabilne ;) </li></ul></ul>
  39. 39. Komponenty Servicemix <ul><li>Cały czas architektura JBI </li><ul><li>Możliwość stosowania razem z instalacjami OSGI </li></ul><li>HTTP, JMS, CXF, File, Quartz, Drools
  40. 40. Konfiguracja w większości poprzez XBean: </li></ul>
  41. 41. JBI+NMR – klastrowanie <ul><li>Klastrowanie </li><ul><li>Na poziomie poszczególnych endpointów </li><ul><li>Drobnoziarnista kontrola, możliwość dostosowania </li></ul><li>Domyślnie komunikacja za pomocą JMS </li><ul><li>Użycie selektorów do wybierania odpowiednich instancji serwera </li></ul></ul></ul>
  42. 42. Apache Camel <ul><li>Lekkie rozwiązanie do trasowania wiadomości
  43. 43. Oparte na EIP Hohpe & Woolf np. : </li><ul><li>Message Router
  44. 44. Dead Letter Channel
  45. 45. Filter
  46. 46. Pipeline
  47. 47. Splitter </li></ul></ul>
  48. 48. Apache Camel – definiowanie tras <ul><li>Kontekst Camela: </li><ul><li>Zbiór endpointów
  49. 49. Trasy między nimi
  50. 50. Dodatki ;) </li></ul><li>Przyjazny w użyciu DSL
  51. 51. Możliwość konfiguracji poprzez XML </li></ul>
  52. 52. Camel – komponenty, języki, formaty <ul><li>Łatwe w tworzeniu (nie jak w JBI ;) ): </li><ul><li>file, direct, jms, jbi, sql, comet, mina, quartz, seda, velocity, xslt, ...
  53. 53. Jednolity dostęp poprzez URI – identyfikator + parametry </li></ul></ul>from( &quot;file://inbox/order?move=.done&quot; ).to( &quot;jms:queue:order?jmsMessageType=Text&quot; ); <ul><li>Użycie wbudowanych języków do definicji warunków i transformacji </li><ul><li>Xpath - //ns:books/page[@no=5] = 'ALA', XQuery
  54. 54. OGNL, języki skryptowe, SQL ;)
  55. 55. Simple, Header, Bean – Content of ${body} with header: ${header.bela} </li></ul><li>Wiele dostępnych formatów danych - (un)marshalling </li><ul><li>XML, CSV
  56. 56. JAXB, Serialized, XMLBeans, Xbeans, ... </li></ul></ul>
  57. 57. Apache Camel <ul><li>Bezpośrednie odwołania do metod POJO </li><ul><li>Przekazywanie parametrów </li></ul></ul>public boolean testExchange ( @ XPath( &quot;//value&quot; ) value, Exchange ex) { … } from ( &quot;direct:endpoint&quot; ).choice().when().method( &quot;bean&quot; , &quot;testExchange&quot; )... <ul><ul><li>Duże możliowści konfiguracji </li></ul><li>Łatwe testowanie jednostkowe </li><ul><li>Specjalne komponenty (mock) do przechwytywania wiadomości </li></ul></ul>
  58. 58. Alternatywy dla SMX + Camel <ul><li>SCA – komplementarne do JBI, konkurencyjne do OSGI
  59. 59. MuleESB – konkurencja bardziej dla Camel
  60. 60. Petals, OpenESB, …
  61. 61. Rozszerzenia: </li><ul><li>FUSE – tworzone przez twórców SMX jako wersja Enterprise
  62. 62. SwordFish – oparte na Eclipse + SMX4 </li></ul><li>Alternatywy dla Camel: </li><ul><li>MuleESB
  63. 63. Spring Integration </li></ul></ul>
  64. 64. ActiveMQ <ul><li>Domyślny dostawca JMS w Servicemix
  65. 65. Możliwość szybkiego utworzenia domyślnej konfiguracji brokera JMS w SMX 4
  66. 66. Możliwości </li><ul><li>Wiele dostępnych topologii sieci brokerów </li><ul><li>Multicasting, przekazywanie wiadomości </li></ul><li>Persystencja wiadomości w plikach (kahaStore) oraz w bazie danych
  67. 67. Wiele protokołów wymiany wiadomości </li><ul><li>Openwire
  68. 68. Stomp </li></ul></ul></ul>
  69. 69. Przykład ODE + SMX <ul><li>Przykład połączenia procesu z zewnętrznymi serwisami – orchestration
  70. 70. SMX1: </li><ul><li>Service Assembly </li><ul><li>ODE SU, JMS SU </li></ul></ul><li>SMX2: </li><ul><li>OSGi Bundle </li><ul><li>JMS, Camel, File </li></ul></ul></ul>
  71. 71. Przykład ODE + SMX SOAPUI – http request 1 2 3 4 5 6 7 8 9 10 11 12 13 SMX 1 – v. 3.3 SMX 2 – v. 4 ODE SE HTTP BC JMS BC Broker AMQ File Endpoint Camel Endpoint JMS Endpoint

×