Komunikace systémů pomocí zasílání zpráv Petr Steckovič 10. 11. 2011 Hradec Králové 1
Komunikace Synchronní / Asynchronní Jednosměrná / Obousměrná Přímá / Zprostředkovaná Nejobvyklejší typ komunikace: Synchronní Obousměrná, Přímá 2
Úryvek ze specifikace po té co je objednávka založena a uživatelem, je poslán e-mail s náhledem objednávky a zároveň je notifikován skladový systém, který zajistí vyskladnění zboží. Založení objednávky je dále napojeno na účetní systém přes, který bude možné vytisknout fakturu 3
Založení objednávky 4
Rizika synchronní komunikace Přímá závislost sos volajícího oaj o na volaném oa Problémy (částečných) výpadků, upgradů Příliš těsná závislost systémů ů Nutnost znát kolaborující systémy Rozdílná rychlost spolupracujících systémů 5
Asynchronní komunikace Nečeká se na kompletní zpracování zprávy Odesílatel zprávy nemusí znát (všechny) příjemce - Motivace pro použití zprostředkované komunikace Request / Response (odesílatel zprávy se obtížně dozví jak zpracování dopadlo) 6
Zprostředkovaná komunikace e-mail e-shop Zprostředkovatel komunikace warehouse accounting 7
Message broker Prostředník oddělující vysílajícího od příjemce (příjemců) Manager queue e / topic a dalších objektů Queue Producer / Consumer Topic Publisher / Subscribe Odolnost proti výpadku Garantované doručení 8
Instalace brokeru Dedikovaný Součást JEE aplikačního serveru Součást aplikace Clustering / Load balancing / Failover Persistentní úložiště Databáze Filesystém Speciální 9
Example - Sender 10
Example - Receiver 11
Example Ostatní JNDI Konfigurace HornetQ 12
Header Properties Anatomie zprávy Standardní d (JMSX prefix, JMSXDeliveryCount) Application Specific Provider (Broker) specific Typ těla zprávy BytesMessage, TextMessage, StreamMessage, MapMessage, ObjectMessage 13
Selektory zpráv Logický ýjazyk see selektorů oů boolean Použití selektorů V aplikaci i V brokeru (směrování / duplikaci ) Příklad selektoru: COUNTRY = CZ AND CITY_ID= HK ID= HK 14
Návrh zprávy Zpráva pá ajeob obvykle rozhraní mezi systémy y Pozor na ObjectMessage!!! Vhodné aplikační č property: Typ zprávy (ORDER_CREATED, ORDER_CANCELLED) Verze dat Některá business data jako property (ORDER_ID, COUNTRY, CITY_ID) ID) 15
Transakce / doručení Transakce Distribuované transakce Doručení / Redelivery Dead Letter Queue (DLQ popř. DMQ) Expiry Queue 16
Bridge Přeposílání zpráv mezi brokery Lokální komunikace poslání zprávy Odolnost proti výpadku remote brokeru Aplikace Remote broker Embedded broker Queue Queue 17
Divert Forwading - exclusive divert OrderQueue OrderTopic Duplikace non-exclusive divert možnost využít selektor OrderQueue AuditingQueue 18
Rozposílání zpráv Řešení specifikace prostředky brokeru AccountingQ EmailQ OrderQueue OrderTopic WarehouseHKQ WarehouseQ 19
Request / Response Emulace synchronního volání Proč tak složitě? Obousměrná komunikace s exspirací Request >>>>>>>> System 1 <<<<<<<< Reponse System 2 <<<<<<<< Expiry 20
Implementace Pomocí oc dynamického see selektoru Robustní Bezeztrátové Pomalejší Pomocí temporary queue (example) Rychlé Konfigurace s expirací nelze Uzavření ř temporary Q ztratí tí její jí obsah V době zpracování requestu nemusí již žadatel existovat 21
Req / Res - Klient 22
Req / Res - Server 23
Podpora v JEE 6 Pouze JEE Full Profile ConnectionFactory, Queue.. jsou zdroje AS - @Resource Plná podpora p distribuovaných transakcí Podpora MDB MDB automaticky ti napojená na thread pool Propustnost aplikace Stavební kámen paralelizmu Zjednodušený deployment 24
Producer servlet JEE 6 25
Consumer MDB JEE 6 26
Q&A 27