10. října 2011

Enterprise integrace, messaging

Dostal jsem se jako teamleader na integrační projekt, založený na proprietárním řešení/technologii. To proprietární (o kterém nechci psát) je nicméně postaveno nad WebSphere Message Brokerem (WMB). Právě kvůli WMB, jsem se pustil do čtení výborné knížky Enterprise Integration Patterns (EIP). A jelikož je pro mne jak WMB, tak EIP nové, rozhodl jsem se o tom napsat (v rámci studia) pár článečků. Takže...


Základní koncepty messagingu

WMB je, jak napovídá název, založený na messagingu, takže se prvně podíváme, co to ten messaging je a na čem jsou postaveny jeho základy (inspirováno a citováno z EIP). Vezměme si následující obrázek, který obsahuje všechny základní koncepty messagingu:


  • Messages (zprávy). Kolem zpráv se to celé točí. Zprávy jsou atomickým paketem dat, která jsou přenášeny z jednoho systému do druhého. Každá zpráva se skládá z hlavičky a z těla (nic překvapivého). Zprávy mají často hierarchickou podobu (např. XML, nebo struktura Java objektů).
  • Channels (kanály). Virtuální "trubky", kterými tečou zprávy. Kanály jsou jednosměrný - jedna aplikace do kanálu zapisuje a druhá z něj čte.
  • Endpoints (koncové body). Rozhraní pro připojení aplikace k messagingovému systému. Umožňuje aplikaci posílat a přijímat zprávy. Instance endpointu je svázána s konkrétním kanálem - z toho vyplývá, že může zprávy buď přijímat, nebo odesílat (ne obojí najednou).
  • Routing (směrování). Pokud máme hodně aplikací a kanálů, může být tok zprávy velmi komplikovaný. Namísto aby se o její trasu musel starat odesílatel, pošle ji do message routeru, který se postará o navigaci zprávy skrze topologii kanálů tak, aby dorazila k příjemci (známe z TCP/IP).
  • Pipes and Filters (trubky a filtry). Pokud potřebujeme se zprávou během jejího toku nějak pracovat, je vhodné ji přes několik kanálů prohnat potřebnými škatulkami - princip, který dobře znají uživatelé Unixu (ls -l /dev/ | grep sd[a-f] | wc -l), nebo električtí kytaristé (kytara - ladička - overdrive - chorus - kombo).
  • Transformation (transformace). To jsou ty krabičky. Potřebuju konvertovat data z jednoho formátu do jiného? Potřebuju zprávu něčím obohatit? Potřebuju změnit transportní protokol? Použiju odpovídající transformaci/krabičku.
Jak je vidět z uvedeného přehledu základních principů, jde o v podstatě triviální koncepty. Přínosem výše uvedené EIP knížky je, že jednak tyto principy probírá do hloubky a v různých variantách, jednak je uvádí komplexně (můžou být věci, které člověku na první, druhý, třetí pohled nedojdou) a jednak je kombinuje do důmyslných a praxí ověřených řešní (přeci jenom, jsou to vzory).