Wiadomości z Dżakarty - Jakarta Messaging
Jakarta Messaging API (dawniej Java Message Service lub JMS API) jest Java interfejs programowania aplikacji (API) dla wiadomości-Oriented Middleware . Zapewnia generyczne modele przesyłania wiadomości, które są w stanie poradzić sobie z problemem producent-konsument , które można wykorzystać do ułatwienia wysyłania i odbierania wiadomości między systemami oprogramowania . Jakarta Messaging jest częścią Jakarta EE i została pierwotnie zdefiniowana przez specyfikację opracowaną w Sun Microsystems przed kierowaniem przez Java Community Process .
Ogólna idea przesyłania wiadomości
Komunikaty to forma luźno powiązanej komunikacji rozproszonej, gdzie w tym kontekście pojęcie „komunikacja” może być rozumiane jako wymiana komunikatów między komponentami oprogramowania. Technologie zorientowane na komunikaty próbują rozluźnić ściśle powiązaną komunikację (taką jak gniazda sieciowe TCP , CORBA lub RMI ) poprzez wprowadzenie komponentu pośredniczącego. Takie podejście umożliwia pośrednią komunikację między komponentami oprogramowania. Korzyści z tego wynikają z tego, że nadawcy wiadomości nie muszą posiadać dokładnej wiedzy o swoich odbiorcach.
Korzyści płynące z przesyłania wiadomości obejmują możliwość integracji heterogenicznych platform, zmniejszenie wąskich gardeł systemu, zwiększenie skalowalności i szybsze reagowanie na zmiany.
Historia wersji
- JMS 1.0
- JMS 1.0.1 (5 października 1998)
- JMS 1.0.1a ( 30.10.1998 )
- JMS 1.0.2 (17 grudnia 1999)
- JMS 1.0.2a (23 grudnia 1999)
- JMS 1.0.2b (27 sierpnia 2001)
- JMS 1.1 (12 kwietnia 2002)
- JMS 2.0 (21 maja 2013)
- JMS 2.0a ( 16.03.2015 )
JMS 2.0 jest obecnie utrzymywany w ramach Java Community Process jako JSR 343.
JMS 3.0 jest na wczesnym etapie rozwoju w ramach Jakarta EE.
Elementy
Poniżej znajdują się elementy JMS:
- dostawca JMS
- Implementacja interfejsu JMS dla oprogramowania pośredniczącego zorientowanego na komunikaty (MOM). Dostawcy są implementowani jako implementacja Java JMS lub adapter do MOM innego niż Java.
- Klient JMS
- Aplikacja lub proces, który generuje i/lub odbiera komunikaty.
- Producent/wydawca JMS
- Klient JMS, który tworzy i wysyła komunikaty.
- Konsument/subskrybent JMS
- Klient JMS odbierający komunikaty.
- Wiadomość JMS
- Obiekt zawierający dane przesyłane między klientami JMS.
- Kolejka JMS
- Obszar pomostowy zawierający wiadomości, które zostały wysłane i oczekują na przeczytanie (tylko przez jednego konsumenta). Jak sugeruje kolejka nazw, wiadomości są dostarczane w kolejności wysłanej. Kolejka JMS gwarantuje, że każdy komunikat jest przetwarzany tylko raz.
- Temat JMS
- Mechanizm dystrybucji do publikowania wiadomości, które są dostarczane do wielu subskrybentów.
Modele
Interfejs API JMS obsługuje dwa różne modele:
- Punkt-punkt
- Publikuj i subskrybuj
Model punkt-punkt
W ramach systemu przesyłania wiadomości typu punkt z punktem wiadomości są kierowane do poszczególnych odbiorców, którzy utrzymują kolejki wiadomości przychodzących. Ten typ wiadomości jest oparty na koncepcji kolejek wiadomości , nadawców i odbiorców. Każda wiadomość jest adresowana do określonej kolejki, a klienci odbierający wyodrębniają wiadomości z kolejek ustanowionych do przechowywania ich wiadomości. Podczas gdy dowolna liczba producentów może wysyłać komunikaty do kolejki, każdy komunikat ma gwarancję dostarczenia i wykorzystania przez jednego konsumenta. Kolejki przechowują wszystkie wysłane do nich wiadomości, dopóki wiadomości nie zostaną wykorzystane lub do momentu wygaśnięcia wiadomości. Jeśli żaden konsument nie jest zarejestrowany do korzystania z komunikatów, kolejka wstrzymuje je, dopóki konsument nie zarejestruje się, aby je wykorzystać.
Model publikowania i subskrybowania
Model publikuj i subskrybuj obsługuje publikowanie wiadomości w określonym „temacie” wiadomości. Abonenci mogą zgłaszać zainteresowanie otrzymywaniem wiadomości publikowanych na określony temat wiadomości. W tym modelu ani wydawca, ani subskrybent nie wiedzą o sobie nawzajem. Dobrą analogią do tego jest anonimowa tablica ogłoszeń.
- Wiadomość otrzyma zero lub więcej konsumentów.
- Istnieje zależność czasowa między wydawcami a subskrybentami. Wydawca musi utworzyć temat wiadomości do subskrybowania przez klientów. Abonent musi być stale aktywny, aby otrzymywać wiadomości, chyba że ustanowił trwałą subskrypcję. W takim przypadku wiadomości publikowane, gdy abonent nie jest połączony, będą rozpowszechniane przy każdym ponownym połączeniu.
JMS umożliwia oddzielenie aplikacji od warstwy transportowej dostarczania danych. Te same klasy Java mogą być używane do komunikowania się z różnymi dostawcami JMS przy użyciu informacji Java Naming and Directory Interface (JNDI) dla żądanego dostawcy. Klasy najpierw używają fabryki połączeń do łączenia się z kolejką lub tematem, a następnie używają wypełniania i wysyłania lub publikowania komunikatów. Po stronie odbierającej klienci odbierają lub subskrybują wiadomości.
Schemat URI
RFC 6167 definiuje jms:
schemat URI dla usługi Java Message Service.
Implementacje dostawcy Provider
Aby korzystać z JMS, trzeba mieć dostawcę JMS, który może zarządzać sesjami, kolejkami i tematami. Począwszy od wersji 1.4 Java EE, dostawca JMS musi być zawarty we wszystkich serwerach aplikacji Java EE. Można to zaimplementować za pomocą zarządzania przepływem komunikatów architektury Java EE Connector Architecture , która została po raz pierwszy udostępniona w tej wersji.
Poniżej znajduje się lista popularnych dostawców JMS:
- Amazon SQS „s Java Messaging Library
- Apache ActiveMQ
- Apache Qpid , przy użyciu AMQP
- IBM MQ (dawniej MQSeries, następnie WebSphere MQ)
- Magistrala integracji usług IBM WebSphere Application Server (SIBus)
- JBoss Messaging i HornetQ od JBoss
- JORAM z Konsorcjum OW2
- Otwórz kolejkę wiadomości od Oracle
- OpenJMS z grupy OpenJMS
- Oracle WebLogic Server i Oracle AQ
- RabbitMQ od Pivotal Software
Zobacz też
- Fasola oparta na wiadomościach
- Kolejka komunikatów — koncepcja leżąca u podstaw JMS
- Architektura zorientowana na usługi
- Technologie przesyłania wiadomości, które nie implementują interfejsu API JMS, obejmują:
- Advanced Message Queuing Protocol (AMQP) — ustandaryzowany protokół kolejki wiadomości z wieloma niezależnymi implementacjami
- Data Distribution Service (DDS) — standaryzowany system obsługi wiadomości w czasie rzeczywistym Object Management Group (OMG) z ponad dziesięcioma implementacjami, które wykazały współdziałanie między wydawcami a subskrybentami
- Microsoft Message Queuing — podobna technologia, zaimplementowana dla .NET Framework
Bibliografia
Dalsza lektura
- Richards, Mark; Richarda Monsona-Haefela; David A. Chappell (2009). Usługa wiadomości Java, wydanie drugie . O'Reilly. Numer ISBN 978-0-596-52204-9.