Med MSMQ (Microsoft Message Queue) kan applikationsutvecklare enkelt kommunicera med applikationer snabbt och pålitligt genom att skicka och ta emot meddelanden. Meddelandebehandling ger dig en pålitlig och säker metod för garanterad meddelandehantering och utförande av många affärsprocesser.
MSMQ, liksom XML Web Services och .Net Remoting, är en distribuerad utvecklingsteknologi. Men när man använder XML Web Services eller .Net Remote-komponenter måste klienten utbyta information med servern i realtid, och servern måste förbli online. MSMQ kan fungera när servern är offline, genom att tillfälligt spara meddelandet i meddelandekön på klientsidan och sedan skicka det till servern för bearbetning när det är online.
Uppenbarligen är MSMQ inte lämplig för situationer där klienten behöver svara snabbt från servern, och MSMQ interagerar asynkront med servern, så det finns ingen anledning att oroa sig för att vänta länge på att servern ska bearbetas.
Även om både XML Web Services och .Net Remoting tillhandahåller egenskapen [OneWay] för att hantera asynkrona anrop, används den för att lösa problemet med långa metodanrop på serversidan som blockerar klientsidan under lång tid. Det kan dock inte lösa problemet med stor klientbelastning, och servern accepterar förfrågningar snabbare än den kan behandla.
Generellt används inte attributet [OneWay] i specialiserade meddelandetjänster.
1. Grundläggande termer och begrepp
Ett "meddelande" är en dataenhet som överförs mellan två datorer. Meddelanden kan vara mycket enkla, till exempel innehålla endast textsträngar; Den kan också vara mer komplex och kan innehålla inbäddade objekt.
Meddelanden skickas till kön. En "meddelandekö" är en behållare som håller meddelanden under deras överföring. Meddelandeköhanteraren fungerar som mellanhand när den vidarebefordrar meddelanden från sin källa till sin destination. Huvudsyftet med en kö är att tillhandahålla routing och garantera leverans av meddelanden; Om mottagaren inte är tillgänglig när meddelandet skickas, håller meddelandekön meddelandet tills det kan levereras framgångsrikt.
"Message Queuing" är Microsofts meddelandebehandlingsteknik som tillhandahåller meddelandebehandling och meddelandeköhantering för alla applikationer i vilken kombination av datorer som helst med Microsoft Windows installerat, oavsett om de är på samma nätverk eller online samtidigt.
Ett "meddelandekönätverk" är en grupp datorer som kan skicka meddelanden fram och tillbaka till varandra. Olika datorer i ett nätverk spelar olika roller för att säkerställa att meddelanden behandlas smidigt. Vissa av dem tillhandahåller routinformation för att avgöra hur meddelanden ska skickas, vissa innehåller viktig information om hela nätverket, och vissa skickar och tar emot meddelanden.
Under installationen av Message Queue avgör administratörerna vilka servrar som kan kommunicera med varandra och sätter särskilda roller för specifika servrar. Datorerna som utgör detta nätverk av "meddelandeköer" kallas "sites" och är kopplade till varandra via "site links." Varje sitelink har en tillhörande "overhead" som bestäms av administratören och anger hur ofta meddelanden levereras via denna sitelink.
Meddelandeköns administratör sätter också upp en eller flera datorer i nätverket som fungerar som routningsservrar. Routingservern tittar på överhuvudet för varje sitelink för att avgöra det snabbaste och mest effektiva sättet att leverera ett meddelande via flera platser och avgöra hur meddelandet ska levereras.
2. Kötyp
Det finns två huvudtyper av köer: köer skapade av dig eller andra användare i ditt nätverk och systemköer.
En användarskapad kö kan vara någon av följande:
Publika köer replikeras över hela meddelandekönätverket och har potential att nås av alla platser som är anslutna till nätverket.
Privata köer publiceras inte över hela nätverket. Istället är de endast tillgängliga på den lokala datorn där de finns. Privata köer kan endast nås av applikationer som känner till hela vägnamnet eller etiketten på kön.
Hanteringskön innehåller meddelanden som bekräftar mottagningar av meddelanden skickade i ett givet meddelandeköns nätverk. Ange vilken hanteringskö du vill att MessageQueue-komponenten ska använda, om någon finns.
Svarskön innehåller svarsmeddelandena som returneras till den avsendende applikationen när målapplikationen tar emot meddelandet. Ange vilken svarskö du vill att MessageQueue-komponenten ska använda, om någon finns.
De köer som genereras av systemet delas vanligtvis in i följande kategorier:
Journal Queue lagrar valfritt kopior av skickade meddelanden och kopior av meddelanden som tagits bort från kön. En enda journalkö på varje Message Queue-klient lagrar en kopia av meddelanden som skickas från den datorn. En separat kalenderkö skapas för varje kö på servern. Denna journal spårar meddelanden som tas bort från den kön.
Dead Letter Queue lagrar kopior av meddelanden som inte kan levereras eller som har gått ut. Om ett meddelande som går ut eller inte kan levereras är transaktionellt, lagras det i en särskild dödbokstavskö kallad en "transaktionell dödbokstavskö". Döda bokstäver lagras på datorn där det utgångna meddelandet finns. För mer information om timeout- och utgångsmeddelanden, se egenskaper för standardmeddelanden.
Rapportkön innehåller meddelanden som anger rutten meddelandet tar för att nå destinationen, och kan även innehålla testmeddelanden. Det kan bara finnas en rapporteringskö på varje dator.
En dedikerad systemkö är en serie dedikerade köer som lagrar de hanterings- och notifikationsmeddelanden som ett system behöver för att utföra meddelandebearbetningsoperationer.
Det mesta av arbetet i applikationen innebär att komma åt publika köer och deras meddelanden. Beroende på applikationens journalföring, bekräftelse och andra särskilda bearbetningsbehov är det dock sannolikt att flera olika systemköer kommer att användas i den dagliga driften.
3. Synkron VS. Asynkron kommunikation
Kökommunikation är i grunden asynkron eftersom det att skicka meddelanden till och ta emot meddelanden från kön sker i olika processer. Dessutom kan mottagningsoperationen utföras asynkront, eftersom personen som vill ta emot meddelandet kan anropa BeginReceived-metoden till en given kö och omedelbart fortsätta med andra uppgifter utan att vänta på svar. Detta skiljer sig mycket från vad folk känner till som "synkron kommunikation".
Vid synkron kommunikation måste avsändaren av förfrågan vänta på svar från den avsedda mottagaren innan andra uppgifter utförs. Hur lång tid avsändaren väntar beror helt på hur lång tid det tar för mottagaren att behandla förfrågan och skicka svaret.
4. Interaktion med meddelandeköer
Meddelandehantering och meddelandehantering erbjuder en kraftfull och flexibel mekanism för interprocesskommunikation mellan serverbaserade applikationskomponenter. De erbjuder flera fördelar jämfört med direkt anrop mellan komponenter, inklusive:
Stabilitet – Komponentfel påverkar meddelanden mycket mindre än direkta samtal mellan komponenter, eftersom meddelanden lagras i en kö och stannar där tills de är korrekt behandlade. Meddelandebehandling liknar transaktionshantering eftersom meddelandehantering är garanterad. Meddelandeprioritering – Mer brådskande eller viktiga meddelanden kan tas emot före relativt oviktiga meddelanden, så du kan garantera tillräcklig svarstid för kritiska applikationer. Offline-funktionalitet – När meddelanden skickas kan de skickas till en tillfällig kö och stanna där tills de levereras framgångsrikt. När åtkomst till önskad kö av någon anledning inte är tillgänglig kan användaren fortsätta med åtgärden. Samtidigt kan andra operationer fortsätta som om meddelandet hade behandlats, eftersom meddelandeleverans garanteras när nätverksanslutningen återställs. Transaktionell meddelandebehandling – Koppla ihop flera relaterade meddelanden till en enda transaktion för att säkerställa att meddelanden levereras sekventiellt, endast en gång, och kan hämtas framgångsrikt från sin destinationskö. Om det finns några fel avbryts hela transaktionen. Säkerhet – Meddelandekösteknologin som MessageQueue-komponenten bygger på använder Windows Security för att säkra åtkomstkontroll, tillhandahålla granskning samt kryptera och autentisera meddelanden som skickas och tas emot av komponenten.
5. Skriv ett enkelt meddelandeköprogram i .Net-miljön
(1) Installera meddelandekötjänster först
Installera MSMQ via Kontrollpanelen, steget "Lägg till/Ta bort program" – "Lägg till/ta bort Windows-komponenter".
MSMQ kan installeras i antingen arbetsgruppsläge eller domänläge. Om installatören inte hittar en server som kör en meddelandekö som tillhandahåller katalogtjänster kan den endast installeras i arbetsgruppsläge, och meddelandekön på denna dator stöder endast skapandet av privata köer och skapandet av direkta anslutningar till andra datorer som kör meddelandeköer.
(2) Konfigurera MSMQ
Öppna datorhantering – Meddelandekö och skapa en MSMQDemo-kö under Privata köer
(3) Skriv kod – demonstrera helt enkelt MSMQ-objektet
MessageQueue-klassen är en wrapper runt en "meddelandekö". Klassen MessageQueue tillhandahåller en referens till Message Queue-kön. Du kan ange en väg till en befintlig resurs i MessageQueue-konstruktorn, eller så kan du skapa en ny kö på servern. Innan du kan anropa Send, Peek eller Rereceive måste du associera en ny instans av MessageQueue-klassen med en befintlig kö.
MessageQueue stöder två typer av meddelandehämtning: synkron och asynkron. De synkroniserade Peek- och Mottagningsmetoderna gör att processtråden väntar på att ett nytt meddelande ska anlända till kön vid ett angivet intervall. De asynkrona metoderna BeginPeek och BeginReceive tillåter att huvudapplikationsuppgiften fortsätter att köras i en separat tråd innan meddelandet når kön. Dessa metoder fungerar genom att använda callback-objekt och tillståndsobjekt för att underlätta informationskommunikation mellan trådar.
Källkodsnedladdning:
Turister, om ni vill se det dolda innehållet i detta inlägg, snälla Svar
|