2015-05-27 17 views
6

Mogę używać aplikacji Java MQ Api do wysyłania i odbierania wiadomości. Mogę również wyłączyć pobieranie i umieścić w kolejce.Czy apki MQ obsługują aliasy modyfikują

Podczas projektu migracyjnego aplikacja będzie działać równolegle. Stary i nowy. Stare i nowe będą miały osobne kolejki. Regularnie przesyłam wiadomości od klienta do Old. Czasami chcesz, aby wiadomość była przekazywana do opcji Nowy.

zastanawiasz się, czy MQ obsługuje koncepcję bramki/przełącznika. gdzie przez API mogę wskazać kolejkę, aby przez krótki czas przejść tylko na Nowy lub tylko na Stary.

Próba uniknięcia routingu opartego na wiadomościach za pośrednictwem WMB, ponieważ nie muszę tego robić dzisiaj. Tryb równoległy trwa tylko kilka miesięcy.

Odpowiedz

3

Nie wspomniano o wersji produktu MQ ani o tym, czy istnieją powiązania z komunikatami, czy też zależność od zachowania wartości MQMD.MsgID. Są one kluczowe przy opracowywaniu rozwiązania tego problemu. Postaram się opisać wystarczającą liczbę opcji, aby przynajmniej jedna była wykonalna niezależnie od wersji, w której się znajdujesz.

Pub/Sub
Najłatwiejszą rzeczą do zrobienia jest, aby komunikaty przybyć na alias nad tematem. Każda wiadomość, która nadejdzie, jest natychmiast publikowana na ten temat. Wtedy łatwo wygenerować subskrypcje administracyjne, aby kierować wiadomości do kolejek, na których słuchają aplikacje wymagające wiadomości. Jest to całkowicie zmiana konfiguracji i nie wymaga zewnętrznych komponentów, procesów ani kodu. Jest dostępny od wersji 7.1 MQ i wyższej, czyli dowolnej z aktualnie obsługiwanych wersji MQ.

Wadą jest to, że IBM MQ zmieni MQMD.MsgID od czasu otrzymania wiadomości na temat do czasu opublikowania w kolejce wejściowej aplikacji. Łamie to zdolność aplikacji do używania MQMD.MsgID przychodzącej wiadomości jako ID korelacji podczas odpowiadania. Jeśli aplikacja wysyłająca żądanie wstępnie ładuje identyfikator korelacji lub nie opiera się na identyfikatorze korelacji, nie stanowi to problemu.

Aliasing
Ale dla aplikacji, w których jest to problem, robi się trochę trudniej. Możesz alias nad kolejką i wiadomości przychodzące wylądują na aliasie. Gdy zachodzi potrzeba przejścia z jednej kolejki na drugą, należy zmienić alias. Jest kilka problemów z tym. Po pierwsze, nigdy nie jest możliwe dostarczenie strumienia wiadomości do więcej niż jednej aplikacji. W teście równoległego przetwarzania często jest pożądane zrobienie tego dokładnie, a następnie porównywanie raportów podsumowujących lub szczegółowych.

Drugi problem ma bardziej operacyjny charakter. Nie można zmienić aliasu, gdy jest otwarty. Jeśli wiadomości docierają do kanału RCVR, RQSTR lub "CLUSRCVR, nie ma problemu. Zatrzymaj channe, przełącz alias i uruchom ponownie kanał. W serii komend skryptowych MQSC można to zrobić szybciej, niż można je wpisać. Jeśli jednak aplikacje wysyłające komunikaty są połączone w trybie powiązań lub przez klienta bezpośrednio z aliasem, muszą zostać zatrzymane, aby zmienić alias.

Powiedziawszy, aliasing działa na wszystkich wersjach MQ po wyjęciu z pudełka.

kopia fizyczny
Jednym z rozwiązań, które już od dłuższego czasu jest użycie programu Q (SupportPac MA01) do kierowania wiadomości. W tym scenariuszu kolejka, w której pojawiają się komunikaty, jest lokalną kolejką.Program Q jest wyzwalany lub ustawiony na ciągłe nasłuchiwanie w kolejce. Gdy nadejdzie wiadomość, Q kopiuje ją do jednej lub obu kolejek docelowych.

przełączania zachowanie jeśli wywołany Q obejmuje wstępne definiując procesy 2 lub 3, w którym każda definiuje inną zachowanie - przesunięcie nowe wiadomości QUEUEA do QUEUEB lub do obu. Zmiana atrybutu kolejki na PROCESS w celu wskazania innego procesu powoduje natychmiastową zmianę zachowania. Alternatywnie, jeśli Q jest skonfigurowany do ciągłego nasłuchiwania w kolejce, to zmiana zachowania wymaga użycia trzech różnych skryptów do wykonania go, gdy jeden powoduje skopiowanie wiadomości do QUEUEA, drugi do QUEUEB, a drugi do obu kolejek. Zmiana zachowania polega na zabiciu skryptu i rozpoczęciu innego.

Program Q współpracuje ze wszystkimi wersjami produktu MQ, niezależnie od tego, czy jest on uruchamiany czy obsługiwany za pomocą skryptów.

Wady tego podejścia obejmują oczywiste - bardziej ruchome części. Musisz wywołać kolejkę lub sprawić, by program transakcyjny działał jak demon. Nie jest to trudne, ale jeśli obstawiasz na nim swoją firmę, być może monitorujesz, aby kolejka wejściowa nie zaczęła się budować.

Zalecenie
Spośród wszystkich tych metod, ja naprawdę jak pub/wersji Sub. Jest niezwykle niezawodny, ma najmniej ruchome części, a jeśli coś zepsuje, jest obsługiwany przez IBM. Kiedy musisz coś zmienić, możesz to zrobić przy minimalnym wpływie na działające aplikacje. Jeśli to w ogóle możliwe, użyj tego.