WebSphere MQ, vzdálené posílání zpráv
Chystám teď do firmy takovou kumulovanou prezentaci o Enterprise Integration Patterns (EIP), WebSphere MQ (WMQ) a WebSphere Message Brokeru (WMB), tak bych se chtěl postupně podělit o pár konceptů. První z nich je koncept remote messaging na WMQ.
Následující příklad předpokládá již hotovou instalaci WMQ a je zaměřen na komunikaci dvou instancí WMQ - jedna je na lokálním a jedna na vzdáleném prostředí. Pro vyzkoušení, nebo prezentaci je možné použít i jenom jedinou, lokální instanci. Nejdřív si na úvod definujeme základní komponenty, které bude potřeba vytvořit, a které spolu budou komunikovat:
Queue Manager
Správce front vlastní a spravuje fronty, kanály a další objekty. Je to první WMQ objekt, který je nutné na čisté instalaci vytvořit. Správce umožňuje další objekty vytvářet, konfigurovat, spouštět, vypínat atd. Pro přístup k frontám a zprávám poskytuje queue manager dvě rozhraní (API):
- Message Queue Interface (MQI) - proprietární rozhraní umožňující kompletní přístup k WMQ.
- Java Message Service (JMS) - Java specifikace pro asynchronní messaging.
Queue
Datová struktura pro ukládání zpráv. V našem příkladu budeme používat čtyři typy front:
- Local queue - lokální fronta pro ukládání zpráv.
- Remote queue - definice fronty, která je vlastněná jiným queue managerem.
- Transmission queue - (lokální fronta,) dočasné úložiště zpráv určených pro vzdáleného queue managera.
- Dead-letter queue - lokální fronta určená pro nedoručitelné zprávy.
- odesílající Message Channel Agent (MCA),
- přijímající MCA,
- komunikační spojení.
- Vytvoření queue managera.
- Vytvoření dead-letter queue.
- Vytvoření local (remote) queue.
- Vytvoření transmission queue.
- Vytvoření message channelu.
- (Spuštění sender message channelu.)
Jelikož nejde o tutoriál, nebudu popisovat vytvoření jednotlivých objektů - to je dobře popsáno v dokumentaci. Pouze bych zde zmínil, že všechny uvedené objekty lze vytvořit dvěma způsoby - buď pomocí grafického rozhraní MQ Explorer (velice snadné), nebo pomocí MQ Script Commands (MQSC).
Výsledná architektura vypadá takto:
A k čemu je to vůbec dobré, posílat zprávu z jednoho queue managera na jiný? Jenom čistě pro posílání zpráv to samozřejmě smysl nemá - na to by stačily fronty definované v rámci jednoho queue managera, ke kterým by se připojovali komunikující konzumenti a provideři.
Smysl to začíná dávat v momentě, pokud potřebuje komunikovat více queue managarů, např. z důvodů high availability, škálovatelnosti apod.
