Kolejka komunikatów: Różnice pomiędzy wersjami

[wersja przejrzana][wersja przejrzana]
Usunięta treść Dodana treść
Poprawa literówki.
m pogrupowanie zdań w akapity
Linia 2:
 
== Informacje ogólne ==
Kolejka komunikatów jest asynchronicznym [[protokół komunikacyjny|protokołem komunikacyjnym]], co oznacza, że odbiorca i nadawca wiadomości nie muszą łączyć się z kolejką w tym samym czasie. Komunikaty przesłane kolejce są przechowywane aż do czasu odebrania przez inny proces. Większość kolejek komunikatów ma ustawiony maksymalny rozmiar przesyłanych danych w jednej wiadomości. Te, które nie posiadają takich limitów, nazywane są '''mailbox'''. Duża liczba implementacji kolejek działa tylko w obrębie [[system operacyjny|systemu operacyjnego]] lub [[aplikacja (informatyka)|aplikacji]]. Takie mechanizmy przeznaczone są tylko dla celów tych systemów.
 
Większość kolejek komunikatów ma ustawiony maksymalny rozmiar przesyłanych danych w jednej wiadomości. Te, które nie posiadają takich limitów, nazywane są '''mailbox'''.
 
Duża liczba implementacji kolejek działa tylko w obrębie [[system operacyjny|systemu operacyjnego]] lub [[aplikacja (informatyka)|aplikacji]]. Takie mechanizmy przeznaczone są tylko dla celów tych systemów.
 
Inne implementacje pozwalają przesyłać wiadomości pomiędzy różnymi systemami, potencjalnie łącząc różne aplikacje czy systemy operacyjne. Takie kolejki zazwyczaj dostarczają metody pozwalające na zwiększenie niezawodności w przypadku awarii systemu. Przykłady komercyjnych implementacji to [[WebSphere MQ]] (wcześniej MQ Series) firmy [[IBM]], kolejka firmy [[Fiorano]], [[Oracle Advanced Queuing]] (AQ) wewnątrz [[Oracle (baza danych)|bazy danych Oracle]], oraz [[Microsoft Message Queuing|MSMQ]] [[Microsoft]]u. Rozwiązaniami dostępnymi na zasadach [[wolne oprogramowanie|wolnego oprogramowania]] są [[Web Service Message Queue (WSMQ)]], [[JBoss Messaging]], JORAM oraz [[ActiveMQ]].
 
Większość [[system operacyjny czasu rzeczywistego|systemów operacyjnych czasu rzeczywistego]] takich jak [[VxWorks]] i [[QNX]] zachęca do używania kolejkowania wiadomości jako podstawowego mechanizmu komunikacji międzyprocesowej lub międzywątkowej. Wynikająca z tego ścisła integracja przekazywania wiadomości z [[algorytm szeregowania|algorytmem szeregowania]] procesora jest jedną z głównych przyczyn użyteczności systemów czasu rzeczywistego dla aplikacji czasu rzeczywistego. Wśród wczesnych przykładów komercyjnych systemów czasu rzeczywistego, które umożliwiały komunikację międzywątkową bazującą na kolejkowaniu wiadomości możemy wymienić VRTX i pSOS+, oba z początku lat osiemdziesiątych.
 
Wśród wczesnych przykładów komercyjnych systemów czasu rzeczywistego, które umożliwiały komunikację międzywątkową bazującą na kolejkowaniu wiadomości możemy wymienić VRTX i pSOS+, oba z początku lat osiemdziesiątych.
 
== Zastosowanie ==
W typowej konfiguracji kolejkowania wiadomości, administrator systemu instaluje i konfiguruje gotowe oprogramowanie do kolejkowania wiadomości (menedżera kolejek) i definiuje nazwaną kolejkę wiadomości. Następnie aplikacja rejestruje rutynę nasłuchującą wiadomości umieszczonych w kolejce. Druga i kolejne aplikacje mogę się połączyć z kolejką i przetransferować do niej wiadomość.
 
Następnie aplikacja rejestruje rutynę nasłuchującą wiadomości umieszczonych w kolejce.
 
Druga i kolejne aplikacje mogę się połączyć z kolejką i przetransferować do niej wiadomość.
 
Menedżer kolejki przechowuje wiadomości aż do momentu gdy aplikacja odbierająca połączy się i wywoła zarejestrowaną rutynę. Następnie aplikacja odbierająca przetwarza wiadomość w odpowiedni sposób.
 
Menedżer kolejki przechowuje wiadomości aż do momentu gdy aplikacja odbierająca połączy się i wywoła zarejestrowaną rutynę. Następnie aplikacja odbierająca przetwarza wiadomość w odpowiedni sposób. Istnieją liczne opcje warunkujące dokładną semantykę przekazywania wiadomości, takie jak:
* trwałość (tzn. czy kolejkowane dane mogą być jedynie przechowywane w pamięci czy też nie mogą zostać zagubione i muszą być w związku z tym przechowywane na dysku lub nawet przekazane do [[system zarządzania bazą danych|systemu zarządzania bazą danych]]).
* polityka bezpieczeństwa - które aplikacje powinny mieć dostęp do tych wiadomości?,
Linia 36 ⟶ 24:
 
== Synchroniczne i asynchroniczne ==
Wiele z lepiej znanych używanych protokołów komunikacyjnych działa synchronicznie. Protokół [[Hypertext Transfer Protocol|HTTP]] - używany w [[World Wide Web]] i [[usługa sieciowa|usługach sieciowych]] - jest tutaj dobrym przykładem. W wielu sytuacjach rozwiązanie to ma duży sens - np użytkownik wysyła żądanie do strony internetowej i oczekuje na odpowiedź.
 
W wielu sytuacjach rozwiązanie to ma duży sens - np użytkownik wysyła żądanie do strony internetowej i oczekuje na odpowiedź.
 
Jednakże istnieją inne potencjalne scenariusze, dla których takie zachowanie nie jest pożądane. Na przykład aplikacja może chcieć poinformować inną, że zdarzenie miało miejsce, ale nie ma potrzeby oczekiwać na odpowiedź. Inny przykład to systemy typu [[publish/subscribe]] gdzie aplikacja publikuje informację odczytywaną następnie przez wielu klientów. W żadnym z tych przypadków nie miałoby sensu aby nadawca musiał czekać, jeśli na przykład któryś z odbiorców uległ awarii.
Linia 45 ⟶ 31:
 
We wszystkich tych sytuacjach posiadanie systemu, który wykonuje asynchroniczne kolejkowanie wiadomości możemy usprawnić działanie systemu jako całości.
 
[[Kategoria:Budowa systemu operacyjnego]]