200 likes | 516 Views
Message Queuing (MSMQ). Cezary Nolewajka Getin Sp. z o.o. c.nolewajka@m2mob.com. MSMQ – co to jest?. Co to jest MSMQ? infrastruktura najnowsza wersja: MSMQ 3.0 (.Net Server, XP) Cechy MSMQ gwarantowane dostarczenie wiadomości, transakcje, bezpieczeństwo (autentykacja, szyfrowanie),
E N D
Message Queuing(MSMQ) Cezary Nolewajka Getin Sp. z o.o. c.nolewajka@m2mob.com
MSMQ – co to jest? • Co to jest MSMQ? • infrastruktura • najnowsza wersja: MSMQ 3.0 (.Net Server, XP) • Cechy MSMQ • gwarantowane dostarczenie wiadomości, • transakcje, • bezpieczeństwo (autentykacja, szyfrowanie), • wydajne kierowanie ruchem, • priorytety, • inne: HTTP, triggers, multicast, message lookup, AD integration, cross-platform, active/active cluster support, Windows CE Client, backup and restore
MSMQ – serwery, klienci • MSMQ Server • dostęp do AD, także dla klientów wcześniejszych wersji: MSMQ 1.0/2.0 (wymagany MSMQ Downlevel Client Support) • obsługa kierowania ruchem wiadomości (routing) • wsparcie dla klientów zależnych • MSMQ Client (Independent) • mogą pracować bez połączenia (mobility) • rozłożenie ruchu (in/out-routing servers) • nie można zainstalować „Routing Component” oraz wsparcia dla klientów MSMQ 1.0/2.0 („Downlevel Client Support”)
MSMQ – serwery, klienci (c.d.) • MSMQ Client (Dependent) • wymaga komputera wspierającego: MSMQ Server lub MSMQ Independent Client • nie może wysyłać wiadomości bez połączenia (offline) • zalety: mniej do administrowania • wady: osłabione szyfrowanie, gorsza wydajność (RPC, wiele klientów/serwer), kolejki klienta na serwerze, nie może korzystać z transportu HTTP, list dystrybucyjnych, czy wieloczęściowych nazw „Format Names”
MSMQ – kolejki • Kolejki (Queues) • publiczne / prywatne (Public/Private Queues)ComputerName\QueueNameComputerName\Private$\QueueName • transakcyjne / nietransakcyjne • administracyjne (Administration Queues, tylko nietransakcyjne) • kolejki odpowiedzi (Response Queues) • kolejki raportowania (Report Queues, tracing)Label: MQReport QueueGUID: {55EE8F32-CCE9-11CF-B108-0020AFD61CE9}
MSMQ – kolejki (c.d.) • Kolejki (Queues) • kolejki systemowe (System Queues): • kolejki kopii (Journal Queues)MACHINE=ComputerGUID;JOURNAL • systemowe kolejki prywatne (Internal Private Queues) i kolejki wysyłające (Outgoing Queues) • kolejki wiadomości niedostarczonych (Dead-letter Queues) • kolejki połączeń (Connector Queues)
MSMQ – nazwy kolejek • Path Names • ComputerName\QueueName • ComuterName\QueueName\Journal$ • ComputerName\Private$\QueueName • MachineName\Journal$ • MachineName\Deatletter$ • MachineName\XactDeatletter$
MSMQ – nazwy kolejek (c.d.) • Format Names • Direct Format Names:DIRECT=ComputerAddress\PublicQueueNameDIRECT=ComputerAddress\PRIVATE$\PrivateQueueNameDIRECT=ComputerAddress\SYSTEM$;SystemQueueNameDIRECT=HTTP://URL_Address/msmq/PublicQueueNameDIRECT=HTTPS://URL_Address/msmq/PublicQueueNameDIRECT=HTTPS://URL_Address/msmq/private$\PrivateQueueDIRECT=TCP:157.18.3.1\MyPublicQueueDIRECT=OS:elvisp.ms.com\MyPublicQueue
MSMQ – nazwy kolejek (c.d.) • Format Names • Public Format Names:PUBLIC=QueueGUIDPUBLIC=QueueGUID;JOURNALPUBLIC=308FB580-1EB2-11CA-923B-08002B1075A7 • Private Format Names:PRIVATE=ComputerGUID\QueueNumberPRIVATE=ComputerGUID\QueueNumber;JOURNALPRIVATE=ae0c5671-f190-12ce-ae10-00dd0114290f\0000000d • Queue Aliases
MSMQ – Journaling • Target Journaling • ustawiane dla każdej kolejki niezależnie • Source Journaling • Positive Source Journaling • Negative Source Journaling (Dead-letter queues)
MSMQ – wiadomości • Typy wiadomości • wiadomości, potwierdzenia, raporty, odpowiedzi • Właściwości wiadomości • dłuuuuga lista.... () • TTRQ, TTBR (uwaga na wartości domyślne!) • Dostarczanie • express messaging vs. recoverable messaging • Wiadomości transakcyjne • ACID, exactly once in-order delivery • external transactions (DTC, XA-Compliant) • internal transactions (single message implicit)
MSMQ – wiadomości (c.d.) • Formatowanie wiadomości • XMLMessageFormattermq.Formatter = new XmlMessageFormatter (new string[] {”Assembly.ClassName,Assembly”});mq.Formatter = new XmlMessageFormatter (new Type[] {typeof (ClassName)}); • BinaryMessageFormattermq.Formatter = new BinaryMessageFormatter (); • ActiveXMessageFormatter
MSMQ – bezpieczeństwo • Bezpieczeństwo • autentykacja (Authentication) • serwerówzapytania do kontrolerów domeny i serwerów MSMQ (Kerberos V5, certyfikaty dla MSMQ 1.0) • wiadomości • szyfrowanie (Encryption) 40-bit, 128-bit (MSMQ 3.0), asymetryczne, symetrycznetylko w czasie transmisji sieciowej • autoryzacja (Access Control)
MSMQ – Queued Components • Queued Components • Serviced Component (COM+ Services) • GAC, Server, regsvsc.exe • asynchroniczny • zdalny • transakcyjny • callbacks, exceptions, COM+ events
MSMQ - Triggers • Triggers • reguły (Rules) • reguły wywoływania akcji (Rule Condition) • akcje (Rule Action) – wywołania COM lub EXE • pułapki (Triggers) • monitorowana kolejka • aktywne reguły • dla MS Windows 2000/NT dostępne jako osobno instalowany pakiet
MSMQ – aspekty wydajności • express / recoverable mode • używaj wielowątkowości • bez transakcji / transakcje wewnętrzne / transakcje zewnętrzne • minimalizuj otwieranie i zamykanie kolejek • autentykacja i szyfrowanie • optymalizuj nagłówek wiadomości (Sender SID tylko jeśli używasz autentykacji) • potwierdzenia (acknowledgment) • journalling (recoverable mode!)
MSMQ – aspekty wydajności (c.d.) • optymalizacja fizycznych dysków (storage) • odbieraj wiadomości tylko lokalnie • unikaj zapytań do MQIS • implementuj TTRQ i TTBR • stosuj odpowiednią serializację • odpowiednio dobierz kontekst użytkownika (security context) • pamiętaj o wielkości liter • testuj aplikację z pełnym restartem i offline
MSMQ – co jeszcze? • Routing • Internet Messaging (SRMP) • Clusters, NLB • Cross-platform Messaging
Bibliografia • MS Windows Server 2003 MS Help • MSDN: http://msdn.microsoft.com/msmq/ • artykuły techniczne, optymalizacja, testy wydajności • Grupy dyskusyjnemicrosoft.public.msmq.programming i inne • MS Visual Studio .Net Documentation • MSMQ Administrator’s Guide (MS Windows 2000 online documentation) • http://www.informit.com/ • artykuły, „Queued Components” • Visual Basic Programmer’s Guide to the .Net Framework Class Library, SAMS