Priorytet komunikatu określany jest przez wypełnienie pola Priority w nagłówku komunikatu. Wartością tego pola
jest liczba od 0 do 9, gdzie 0 oznacza najniższy priorytet, a 9 najwyższy. Parametr ten jest dość często
wykorzystywany w systemach gdzie np. do tej samej kolejki trafiają komunikaty o rożnej charakterystyce obsługi.
Jako przykład można ty przytoczyć aplikację wysyłającą dwa rodzaje komunikatów, jeden obsługiwany w adapterze
dość długo, a drugi obsługiwany w ułamku sekundy. I teraz niech aplikacja wyśle w krótkim czasie na przemian
kilkadziesiąt "długich" i kilkadziesiąt "krótkich" komunikatów. Jeśli adapter obierający będzie działał w
jednym wątku lub będzie miał ich niewiele, to jeśli wysłane komunikaty będą miały taki sam priorytet, będą
one obsłużone zgodnie z zasadą FIFO (pierwsze przyszło, pierwsze wyszło). Jeśli okaże się, że komunikaty
krótkie są dla nas ważniejsze możemy ustawić im wyższy priorytet i wtedy w momencie wrzucenia takiego
komunikatu do kolejki zostanie on dodany na koniec komunikatów o tym samym priorytecie a przed komunikatami
o niższym priorytecie. W takiej sytuacji adapter odbierający pobierze komunikat "długi" tylko wtedy jeśli
nie będzie w kolejce już komunikatów "krótkich" ponieważ będą miały one wyższy priorytet.
Powrót
|