Med MSMQ (Microsoft Message Queue) kan applikasjonsutviklere enkelt kommunisere med applikasjoner raskt og pålitelig ved å sende og motta meldinger. Meldingsbehandling gir deg en pålitelig og sikker metode for garantert meldingsutveksling og for å utføre mange forretningsprosesser.
MSMQ, som XML Web Services og .Net Remote, er en distribuert utviklingsteknologi. Men når man bruker XML Web Services eller .Net Remote-komponenter, må klienten utveksle informasjon med serveren i sanntid, og serveren må forbli online. MSMQ kan fungere når serveren er offline, og midlertidig lagre meldingen i meldingskøen på klientsiden, og deretter sende den til serveren for behandling når den er online.
Det er åpenbart at MSMQ ikke er egnet for situasjoner der klienten må svare raskt fra serveren, og MSMQ interagerer asynkront med serveren, så det er ikke nødvendig å bekymre seg for å vente lenge på at serveren skal behandle den.
Selv om både XML Web Services og .Net Remoting tilbyr [OneWay]-egenskapen for å håndtere asynkrone kall, brukes den til å løse problemet med lange metodekall på serversiden som blokkerer klientsiden over lang tid. Den kan imidlertid ikke løse problemet med stor klientbelastning, og serveren aksepterer forespørsler raskere enn den kan behandle.
Generelt brukes ikke attributtet [OneWay] i spesialiserte meldingstjenester.
1. Grunnleggende begreper og konsepter
En "melding" er en dataenhet som overføres mellom to datamaskiner. Meldinger kan være svært enkle, som å kun inneholde tekststrenger; Den kan også være mer kompleks og kan inneholde innebygde objekter.
Meldinger sendes til køen. En «meldingskø» er en beholder som holder meldinger under overføringen. Meldingskø-manageren fungerer som en mellommann når meldinger videresendes fra kilden til destinasjonen. Hovedformålet med en kø er å tilby ruting og garantere levering av meldinger; Hvis mottakeren ikke er tilgjengelig når meldingen sendes, holder meldingskøen meldingen til den kan leveres med suksess.
"Message Queuing" er Microsofts meldingsbehandlingsteknologi som gir meldingsbehandling og meldingskø-funksjonalitet for enhver applikasjon i hvilken som helst kombinasjon av datamaskiner med Microsoft Windows installert, uavhengig av om de er på samme nettverk eller online samtidig.
Et "meldingskønettverk" er en hvilken som helst gruppe datamaskiner som kan sende meldinger frem og tilbake til hverandre. Ulike datamaskiner i et nettverk spiller ulike roller for å sikre at meldinger behandles smidig. Noen av dem gir ruteinformasjon for å avgjøre hvordan meldinger skal sendes, noen inneholder viktig informasjon om hele nettverket, og noen sender og mottar bare meldinger.
Under installasjonen av Message Queue bestemmer administratorene hvilke servere som kan kommunisere med hverandre og setter spesielle roller for spesifikke servere. Datamaskinene som utgjør dette nettverket av «meldingskøer» kalles «nettsteder», og de er koblet til hverandre via «nettstedslenker». Hver sitelink har en tilknyttet "overhead" som bestemmes av administratoren og angir hvor ofte meldinger leveres gjennom denne sitelinken.
Administrator for meldingskøen setter også opp en eller flere datamaskiner i nettverket som fungerer som rutingsservere. Routingserveren ser på overheaden til hver sitelink for å finne den raskeste og mest effektive måten å levere en melding gjennom flere nettsteder for å finne ut hvordan meldingen skal leveres.
2. Køtype
Det finnes to hovedtyper køer: køer opprettet av deg eller andre brukere i nettverket ditt, og systemkøer.
En brukeropprettet kø kan være en av følgende:
Offentlige køer replikeres over hele Message Queue-nettverket og har potensial til å bli aksessert av alle steder som er koblet til nettverket.
Private køer publiseres ikke over hele nettverket. I stedet er de kun tilgjengelige på den lokale datamaskinen der de befinner seg. Private køer kan kun nås av applikasjoner som kjenner hele stinavnet eller etiketten til køen.
Management Queue inneholder meldinger som bekrefter meldingsmottak sendt i et gitt Message Queue-nettverk. Spesifiser hvilken administrasjonskø du ønsker at MessageQueue-komponenten skal bruke, hvis det er noen.
Responskøen inneholder svarmeldingene som returneres til den sendende applikasjonen når målapplikasjonen mottar meldingen. Spesifiser hvilken responskø du ønsker at MessageQueue-komponenten skal bruke, hvis det er noen.
Køene som genereres av systemet deles vanligvis inn i følgende kategorier:
Journal Queue lagrer valgfritt kopier av sendte meldinger og kopier av meldinger fjernet fra køen. En enkelt journalkø på hver Message Queue-klient lagrer en kopi av meldinger sendt fra den datamaskinen. En egen dagbokkø opprettes for hver kø på serveren. Denne journalen sporer meldinger som fjernes fra den køen.
Dead Letter Queue lagrer kopier av meldinger som ikke kan leveres eller som har utløpt. Hvis en melding som utløper eller ikke kan leveres er transaksjonell, lagres den i en spesiell død bokstav-kø kalt en "transaksjonell død bokstav-kø". Døde bokstaver lagres på datamaskinen der den utgåtte meldingen ligger. For mer informasjon om timeout- og utløpsmeldinger, se Egenskaper for standardmeldinger.
Rapportkøen inneholder meldinger som indikerer ruten meldingen tar for å nå destinasjonen, og kan også inneholde testmeldinger. Det kan bare være én rapporteringskø på hver datamaskin.
En dedikert systemkø er en serie dedikerte køer som lagrer administrasjons- og varslingsmeldinger som et system trenger for å utføre meldingsbehandlingsoperasjoner.
Det meste av arbeidet i applikasjonen innebærer tilgang til offentlige køer og deres meldinger. Avhengig av applikasjonens journalføring, bekreftelse og andre spesielle behandlingsbehov, er det sannsynlig at flere forskjellige systemkøer vil bli brukt i daglig drift.
3. Synkron VS. Asynkron kommunikasjon
Køkommunikasjon er iboende asynkron fordi sending av meldinger til og mottak av meldinger fra køen skjer i forskjellige prosesser. Mottaksoperasjonen kan også utføres asynkront, fordi personen som ønsker å motta meldingen kan kalle BeginReceived-metoden til en gitt kø og umiddelbart fortsette med andre oppgaver uten å vente på svar. Dette er veldig annerledes enn det folk kjenner som «synkron kommunikasjon».
I synkron kommunikasjon må avsenderen av forespørselen vente på svar fra den tiltenkte mottakeren før han kan utføre andre oppgaver. Hvor lang tid avsenderen venter, avhenger helt av hvor lang tid mottakeren tar å behandle forespørselen og sende svaret.
4. Samhandling med meldingskøer
Meldingsbehandling og meldingsutveksling gir en kraftig og fleksibel mekanisme for interprosesskommunikasjon mellom serverbaserte applikasjonskomponenter. De tilbyr flere fordeler sammenlignet med direkte påkalling mellom komponenter, inkludert:
Stabilitet – Komponentfeil påvirker meldinger mye mindre enn direkte samtaler mellom komponenter, ettersom meldinger lagres i en kø og forblir der til de er riktig behandlet. Meldingsbehandling ligner på transaksjonsbehandling ved at meldingsbehandling er garantert. Meldingsprioritering – Mer presserende eller viktige meldinger kan mottas før relativt uviktige meldinger, slik at du kan garantere tilstrekkelig responstid for kritiske applikasjoner. Offline-funksjonalitet – Når meldinger sendes, kan de sendes til en midlertidig kø og forbli der til de er levert. Når tilgang til ønsket kø ikke er tilgjengelig av en eller annen grunn, kan brukeren fortsette med handlingen. Samtidig kan andre operasjoner fortsette som om meldingen var behandlet, fordi meldingslevering er garantert når nettverkstilkoblingen gjenopprettes. Transaksjonell meldingsbehandling – Koble flere relaterte meldinger til én transaksjon for å sikre at meldinger leveres sekvensielt, kun én gang, og kan hentes vellykket fra destinasjonskøen. Hvis det oppstår feil, kanselleres hele transaksjonen. Sikkerhet – Meldingskø-teknologien som MessageQueue-komponenten er basert på, bruker Windows Security for å sikre tilgangskontroll, tilby revisjon, samt kryptere og autentisere meldinger sendt og mottatt av komponenten.
5. Skriv et enkelt meldingskøprogram i .Net-miljøet
(1) Installer meldingskøtjenester først
Installer MSMQ via Kontrollpanelet, steget «Legg til/Fjern programmer» – «Legg til/fjern Windows-komponenter».
MSMQ kan installeres enten i arbeidsgruppemodus eller domenemodus. Hvis installasjonsprogrammet ikke finner en server som kjører en meldingskø som tilbyr katalogtjenester, kan den kun installeres i arbeidsgruppemodus, og meldingskøen på denne datamaskinen støtter kun opprettelse av private køer og opprettelse av direkte tilkoblinger til andre datamaskiner som kjører meldingskøer.
(2) Konfigurer MSMQ
Åpne datastyring – Meldingskø og opprett en MSMQDemo-kø under Private køer
(3) Skriv kode – demonstrer enkelt MSMQ-objektet
MessageQueue-klassen er en wrapper rundt en "meldingskø". MessageQueue-klassen gir en referanse til Message Queue-køen. Du kan spesifisere en sti til en eksisterende ressurs i MessageQueue-konstruktøren, eller du kan opprette en ny kø på serveren. Før du kan kalle Send, Peek eller Resept, må du knytte en ny instans av MessageQueue-klassen til en eksisterende kø.
MessageQueue støtter to typer meldingshenting: synkron og asynkron. De synkroniserte Peek- og Mottake-metodene får prosesstråden til å vente på at en ny melding skal ankomme køen med et spesifisert intervall. De asynkrone metodene BeginPeek og BeginReceive lar hovedapplikasjonsoppgaven fortsette å kjøre i en separat tråd før meldingen når køen. Disse metodene fungerer ved å bruke callback-objekter og tilstandsobjekter for å lette informasjonskommunikasjon mellom tråder.
Nedlasting av kildekode:
Turister, hvis dere vil se det skjulte innholdet i dette innlegget, vær så snill Svare
|