Med MSMQ (Microsoft Message Queue) kan applikationsudviklere nemt kommunikere hurtigt og pålideligt med applikationer ved at sende og modtage beskeder. Beskedbehandling giver dig en pålidelig og sikker metode til garanteret beskedudveksling og udførelse af mange forretningsprocesser.
MSMQ, ligesom XML Web Services og .Net Remoting, er en distribueret udviklingsteknologi. Men når man bruger XML Web Services eller .Net Remote-komponenter, skal klienten udveksle information med serveren i realtid, og serveren skal forblive online. MSMQ kan fungere, når serveren er offline, midlertidigt gemme beskeden i beskedkøen på klientsiden og derefter sende den til serveren til behandling, når den er online.
Det er åbenlyst, at MSMQ ikke er egnet til situationer, hvor klienten skal svare rettidig fra serveren, og MSMQ interagerer asynkront med serveren, så der er ingen grund til at bekymre sig om at vente længe på, at serveren behandler processen.
Selvom både XML Web Services og .Net Remoting tilbyder [OneWay]-egenskaben til at håndtere asynkrone kald, bruges den til at løse problemet med lange metodekald på serversiden, der blokerer klientsiden i lang tid. Dog kan det ikke løse problemet med stor klientbelastning, og serveren accepterer forespørgsler hurtigere, end den kan behandle.
Generelt bruges attributten [OneWay] ikke i specialiserede beskedtjenester.
1. Grundlæggende begreber og begreber
En "besked" er en dataenhed, der transmitteres mellem to computere. Beskeder kan være meget simple, såsom kun at indeholde tekststrenge; Den kan også være mere kompleks og kan indeholde indlejrede objekter.
Beskeder sendes til køen. En "beskedkø" er en beholder, der indeholder beskeder under deres transmission. Beskedkømanageren fungerer som mellemmand, når den videresender beskeder fra kilden til destinationen. Hovedformålet med en kø er at sikre routing og garantere levering af beskeder; Hvis modtageren ikke er tilgængelig, når beskeden sendes, holder beskedkøen beskeden, indtil den kan leveres med succes.
"Message Queuing" er Microsofts meddelelsesbehandlingsteknologi, der giver mulighed for meddelelsesbehandling og beskedkø for enhver applikation i enhver kombination af computere med Microsoft Windows installeret, uanset om de er på samme netværk eller online på samme tid.
Et "meddelelseskønetværk" er enhver gruppe computere, der kan sende beskeder frem og tilbage til hinanden. Forskellige computere i et netværk spiller forskellige roller i at sikre, at beskeder behandles gnidningsfrit. Nogle af dem giver routinginformation for at afgøre, hvordan beskeder skal sendes, nogle indeholder vigtig information om hele netværket, og nogle sender og modtager blot beskeder.
Under installationen af Message Queue bestemmer administratorerne, hvilke servere der kan kommunikere med hinanden, og fastsætter særlige roller for specifikke servere. Computerne, der udgør dette netværk af "beskedkøer", kaldes "sites", og de er forbundet med hinanden via "site links." Hvert sitelink har en tilknyttet "overhead", som bestemmes af administratoren og angiver, hvor ofte beskeder leveres via dette sitelink.
Beskedkøadministratoren opsætter også en eller flere computere i netværket, som fungerer som routingservere. Routingserveren ser på overheaden for hvert sitelink for at finde den hurtigste og mest effektive måde at levere en besked på gennem flere sites for at finde ud af, hvordan beskeden skal leveres.
2. Køtype
Der findes to hovedtyper af køer: køer oprettet af dig eller andre brugere i dit netværk og systemkøer.
En brugeroprettet kø kan være en af følgende:
Offentlige køer replikeres over hele Message Queue-netværket og har potentiale til at blive tilgået af alle steder, der er tilsluttet netværket.
Private køer offentliggøres ikke på tværs af netværket. I stedet er de kun tilgængelige på den lokale computer, hvor de befinder sig. Private køer kan kun tilgås af applikationer, der kender køens fulde stinavn eller etikette.
Management Queue indeholder beskeder, der bekræfter modtagelser af beskeder sendt i et givent Message Queue-netværk. Angiv den administrationskø, du ønsker, at MessageQueue-komponenten skal bruge, hvis der er nogen.
Response Queue indeholder de svarbeskeder, der returneres til den afsendende applikation, når målapplikationen modtager beskeden. Angiv den svarkø, du ønsker, at MessageQueue-komponenten skal bruge, hvis der er nogen.
De køer, der genereres af systemet, opdeles generelt i følgende kategorier:
Journal Queue gemmer valgfrit kopier af sendte beskeder og kopier af beskeder, der er fjernet fra køen. En enkelt journalkø på hver Message Queue-klient gemmer en kopi af beskeder sendt fra den computer. Der oprettes en separat dagbogskø for hver kø på serveren. Denne journal sporer beskeder, der fjernes fra den kø.
Dead Letter Queue opbevarer kopier af beskeder, der ikke kan leveres eller er udløbet. Hvis en besked, der udløber eller ikke kan leveres, er transaktionel, gemmes den i en særlig dødbogstavskø kaldet en "transaktionel dødbogstavskø". Døde breve gemmes på computeren, hvor den udløbne besked befinder sig. For mere information om timeout- og udløbsmeddelelser, se Egenskaber ved standardmeddelelser.
Rapportkøen indeholder beskeder, der angiver ruten, beskeden tager for at nå destinationen, og kan også indeholde testbeskeder. Der kan kun være én rapporteringskø på hver computer.
En dedikeret systemkø er en række dedikerede køer, der gemmer de administrations- og notifikationsmeddelelser, som et system har brug for for at udføre meddelelsesbehandlingsoperationer.
Det meste af arbejdet i applikationen involverer adgang til offentlige køer og deres beskeder. Afhængigt af applikationens journalføring, kvittering og andre særlige behandlingsbehov er det dog sandsynligt, at flere forskellige systemkøer vil blive brugt i den daglige drift.
3. Synkron VS. Asynkron kommunikation
Køkommunikation er iboende asynkron, fordi afsendelse af beskeder til og modtagelse af beskeder fra køen sker i forskellige processer. Desuden kan modtagelsesoperationen udføres asynkront, fordi den person, der ønsker at modtage beskeden, kan kalde BeginReceived-metoden til en given kø og straks fortsætte med andre opgaver uden at vente på svar. Dette er meget anderledes end det, folk kender som "synkron kommunikation".
I synkron kommunikation skal afsenderen af anmodningen vente på svar fra den tiltænkte modtager, før andre opgaver kan udføres. Hvor lang tid afsenderen venter, afhænger helt af, hvor lang tid modtageren tager at behandle anmodningen og sende svaret.
4. Interaktion med beskedkøer
Meddelelsesbehandling og beskedudveksling giver en kraftfuld og fleksibel mekanisme for interprocesskommunikation mellem serverbaserede applikationskomponenter. De tilbyder flere fordele i forhold til direkte påkaldelse mellem komponenter, herunder:
Stabilitet – Komponentfejl påvirker beskeder meget mindre end direkte opkald mellem komponenter, da meddelelser gemmes i en kø og forbliver der, indtil de er korrekt behandlet. Meddelelsesbehandling ligner transaktionsbehandling ved, at meddelelsesbehandling er garanteret. Beskedprioritering – Mere presserende eller vigtige beskeder kan modtages før relativt uvæsentlige beskeder, så du kan garantere tilstrækkelig svartid for kritiske applikationer. Offline-funktionalitet – Når beskeder sendes, kan de sendes til en midlertidig kø og blive der, indtil de leveres med succes. Når adgang til den ønskede kø af en eller anden grund ikke er tilgængelig, kan brugeren fortsætte med handlingen. Samtidig kan andre operationer fortsætte, som om beskeden var blevet behandlet, fordi beskedlevering er garanteret, når netværksforbindelsen genoprettes. Transaktionel meddelelsesbehandling – Koble flere relaterede beskeder sammen til en enkelt transaktion for at sikre, at beskeder leveres sekventielt, kun én gang, og kan hentes korrekt fra deres destinationskø. Hvis der opstår fejl, annulleres hele transaktionen. Security – Beskedkø-teknologien, som MessageQueue-komponenten er baseret på, bruger Windows Security til at sikre adgangskontrol, tilbyde revision samt kryptere og autentificere beskeder, der sendes og modtages af komponenten.
5. Skriv et simpelt beskedkøprogram i .Net-miljøet
(1) Installer først beskedkøtjenester
Installer MSMQ via Kontrolpanelet, "Tilføje/Fjern programmer" – "Tilføje/Fjern Windows-komponenter"-trinet.
MSMQ kan installeres i enten arbejdsgruppetilstand eller domænetilstand. Hvis installatøren ikke finder en server, der kører en meddelelseskø, som leverer katalogtjenester, kan den kun installeres i arbejdsgruppetilstand, og meddelelseskøen på denne computer understøtter kun oprettelse af private køer og oprettelse af direkte forbindelser til andre computere, der kører meddelelseskøer.
(2) Konfigurér MSMQ
Åbn computerstyring – Beskedkø og opret en MSMQDemo-kø under Private Køer
(3) Skriv kode – demonstrér blot MSMQ-objektet
MessageQueue-klassen er en wrapper omkring en "meddelelseskø". MessageQueue-klassen giver en reference til Message Queue-køen. Du kan specificere en sti til en eksisterende ressource i MessageQueue-konstruktøren, eller du kan oprette en ny kø på serveren. Før du kan kalde Send, Peek eller Receive, skal du tilknytte en ny instans af MessageQueue-klassen til en eksisterende kø.
MessageQueue understøtter to typer af meddelelseshentning: synkron og asynkron. De synkroniserede Peek and Empfang-metoder får procestråden til at vente på, at en ny besked ankommer til køen med et angivet interval. De asynkrone BeginPeek- og BeginReceived-metoder tillader hovedapplikationsopgaven at fortsætte med at køre i en separat tråd, før beskeden når køen. Disse metoder fungerer ved at bruge callback-objekter og tilstandsobjekter for at lette informationskommunikation mellem tråde.
Kildekode-download:
Turister, hvis I vil se det skjulte indhold i dette indlæg, så vær venlig Svar
|