![]() | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| C/C++ / CGI / Sieć Novell / PHP / Java / SQL / Oracle / WebSphere MQ / WebSphere Message Broker / JavaScript / Humor / IT Quiz | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
|
![]() |
W przypadku sieciowych aplikacji MQ, jak i w większości aplikacji sieciowych, największy wpływ na
wydajność ma sama transmisja danych poprzez sieć. Operacje sieciowe stanowią w tym przypadku wąskie
gardło. Z tego powodu zalecane jest, aby w przypadku komunikacji sieciowej, czy tez w przypadku
komunikacji pomiędzy kanałami minimalizować ilość danych przesyłanych po sieci. Temu ma służyć kompresja
danych przesyłanych po sieci, która została wprowadzona do MQ od wersji 6. Ważne jest, że standardowo
zdefiniowany kanał nie obsługuje kompresji. Aby to zmienić należy ustawić jego parametr COMPMSG.
Technika ta polega na tym, ze przy połączeniu klienckim aplikacja przekazuje do menadżera kolejek informacje, jakie sugeruje wykorzystać metody kompresji danych podczas komunikacji. Metody te określane są niezależnie dla nagłówków i danych komunikatu. Nie znaczy to wcale, ze podczas komunikacji kompresja zostanie wykorzystana. Metoda kompresji pomiędzy aplikacją a menadżerem podlegają negocjacji i jeśli np. menadżer kolejek nie będzie miał włączoną kompresje lub zaproponowana przez aplikacje lista sugerowanych metod kompresji nie będzie znana przez menadżera, to komunikacja odbędzie się standardowo bez kompresji. Do określenia sugerowanych metod kompresji dla nagłówków, czy danych używa się statycznych pól hdrCompList oraz msgCompList klasy MQEnvironment. Oba te pola przyjmują obiekty typu Collection, gdzie pierwsze dotyczy kompresji nagłówków, a drugi kompresji danych. Poniższe dwa przykłady obrazują omawianą technikę. Pierwszy przykład dotyczy kompresji nagłówków, a drugi kompresji danych w komunikacie. Przykład 1:
Collection headerComp = new Vector();
Przykład 2:
Collection msgComp = new Vector();
W przypadku transmisji pomiędzy kanałami, np. sender-receiver aby włączyć kompresję należy ustawić na oby tych kanałach atrybuty COMPMSG (Data compression) w przypadku kompresji danych w komunikacie oraz COMPHDR (Header compression) w przypadku kompresji nagłówków. Jako wartość tych atrybutów przyjmuje się nazwy metod kompresji lub wartość określającą, że wszystkie z nich są dozwolone. Ważne jest aby na oby komunikujących się ze sobą kanałach wartości te były identyczne i wskazywały na tą samą metodę kompresji lub na jednym z nich było wskazanie na konkretną metodę, a na drugim wartość ta była ustawiona na ANY (tylko w przypadku atrybutu COMPMSG) co oznacza, że dany kanał obsługuje dowolna metodę kompresji. Atrybut COMPMSG przyjmuje wartości: NONE RLE ZLIBFAST ZLIBHIGH ANY Atrybut COMPHDR przyjmuje wartości: NONE SYSTEM |
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
|
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||