MSMQ:n (Microsoft Message Queue) avulla sovelluskehittäjät voivat kätevästi kommunikoida sovellusten kanssa nopeasti ja luotettavasti lähettämällä ja vastaanottamalla viestejä. Viestinkäsittely tarjoaa luotettavan varmistusmenetelmän taattavaan viestintään ja monien liiketoimintaprosessien suorittamiseen.
MSMQ, kuten XML Web Services ja .Net Remoting, on hajautettu kehitysteknologia. Kuitenkin, kun käytetään XML Web Services tai .Net Remoting -komponentteja, asiakkaan täytyy vaihtaa tietoja palvelimen kanssa reaaliajassa, ja palvelimen on pysyttävä verkossa. MSMQ voi toimia, kun palvelin on offline-tilassa, tallentaen viestin väliaikaisesti asiakaspuolen viestijonoon ja lähettämällä sen palvelimelle käsiteltäväksi, kun se on verkossa.
MSMQ ei tietenkään sovellu tilanteeseen, jossa asiakkaan täytyy vastata palvelimelta ajallaan, ja MSMQ on vuorovaikutuksessa palvelimen kanssa asynkronisesti, joten ei tarvitse huolehtia palvelimen käsittelyn odottamisesta pitkään.
Vaikka sekä XML Web Services että .Net Remoting tarjoavat [OneWay]-ominaisuuden asynkronisten puheluiden käsittelyyn, sitä käytetään ratkaisemaan ongelma, jossa palvelinpuolella on pitkät metodikutsut, jotka estävät asiakaspuolen pitkäksi aikaa. Se ei kuitenkaan pysty ratkaisemaan suuren asiakaskuormituksen ongelmaa, ja palvelin hyväksyy pyynnöt nopeammin kuin ehtii käsitellä.
Yleisesti ottaen [OneWay]-attribuuttia ei käytetä erikoistuneissa viestipalveluissa.
1. Perustermit ja käsitteet
"Viesti" on tietoyksikkö, joka välitetään kahden tietokoneen välillä. Viestit voivat olla hyvin yksinkertaisia, esimerkiksi sisältäen vain tekstijonoja; Se voi myös olla monimutkaisempi ja sisältää upotettuja objekteja.
Viestit lähetetään jonoon. "Viestijono" on kontti, joka tallentaa viestit niiden lähetyksen aikana. Viestijononhallinta toimii välikätenä, kun viestit välittävät lähteeltään määränpäähän. Jonon päätarkoitus on reitittää ja taata viestien toimitus; Jos vastaanottaja ei ole käytettävissä viestin lähetyksen aikaan, viestijono pitää viestin paikallaan, kunnes se voidaan toimittaa onnistuneesti.
"Message Queuing" on Microsoftin viestinkäsittelyteknologia, joka tarjoaa viestinkäsittely- ja jonotusominaisuudet mille tahansa sovellukselle kaikissa Microsoft Windows -asennettavissa tietokoneissa, riippumatta siitä, ovatko ne samassa verkossa vai verkossa samaan aikaan.
"Viestijonoverkko" tarkoittaa mikä tahansa tietokoneryhmä, joka voi lähettää viestejä toisilleen. Verkon eri tietokoneilla on eri rooli viestien sujuvan käsittelyn varmistamiseksi. Jotkut niistä tarjoavat reititystietoa viestien lähettämisen määrittämiseksi, toiset sisältävät tärkeää tietoa koko verkosta, ja jotkut yksinkertaisesti lähettävät ja vastaanottavat viestejä.
Message Queue -asennuksen aikana ylläpitäjät määrittävät, mitkä palvelimet voivat kommunikoida keskenään ja asettavat erityiset roolit tietyille palvelimille. Tietokoneita, jotka muodostavat tämän "viestijonojen" verkoston, kutsutaan "sivustoiksi", ja ne on yhdistetty toisiinsa "site links" -linkeillä. Jokaisella sitelinkillä on siihen liittyvä "ylikuormitus", jonka ylläpitäjä määrittää ja joka kertoo, kuinka usein viestejä toimitetaan tämän sivustolinkin kautta.
Viestijonon ylläpitäjä perustaa myös yhden tai useamman tietokoneen verkkoon, jotka toimivat reitityspalvelimina. Reitityspalvelin tarkastelee kunkin sitelinkin ylikuormitusta määrittääkseen nopeimman ja tehokkaimman tavan välittää viesti useiden sivustojen läpi, jotta voidaan selvittää, miten viesti toimitetaan.
2. Jonotyyppi
Jonoja on kahta päätyyppiä: jonot, jotka sinä tai muut käyttäjät verkossasi luot, ja järjestelmäjonot.
Käyttäjän luoma jono voi olla mikä tahansa seuraavista:
Julkiset jonot toistuvat koko Message Queue -verkossa ja niillä on potentiaalia kaikkien verkkoon liitettyjen sivustojen käytettävissä.
Yksityisiä jonoja ei julkaista verkon yli. Sen sijaan ne ovat saatavilla vain paikallisella tietokoneella, jossa ne sijaitsevat. Yksityisiin jonoihin pääsevät käsiksi vain sovellukset, jotka tuntevat jonon koko polun nimen tai tunnisteen.
Hallintajono sisältää viestejä, jotka vahvistavat viestin vastaanotot tietyssä viestijonon verkossa. Määritä hallintajono, jota haluat MessageQueue-komponentin käyttävän, jos sellainen on.
Vastausjono sisältää vastausviestit, jotka palautetaan lähettävälle sovellukselle, kun kohdesovellus vastaanottaa viestin. Määritä vastausjono, jota haluat MessageQueue-komponentin käyttävän, jos sellainen on.
Järjestelmän generoimat jonot jaetaan yleensä seuraaviin kategorioihin:
Journal Queue tallentaa halutessaan kopiot lähetetyistä viesteistä sekä jonosta poistetuista viesteistä. Jokaisessa Message Queue -asiakkaassa on yksi päiväkirjajono tallentaa kopion kyseiseltä tietokoneelta lähetetyistä viesteistä. Jokaiselle palvelimen jonolle luodaan erillinen päiväkirjajono. Tämä päiväkirja seuraa viestejä, jotka on poistettu kyseisestä jonosta.
Dead Letter Queue tallentaa kopioita viesteistä, joita ei voida toimittaa tai jotka ovat vanhentuneet. Jos viesti, joka vanhenee tai jota ei voida toimittaa, on transaktionaalinen, se tallennetaan erityiseen kuolleen kirjeen jonoon, jota kutsutaan "transaktionaaliseksi dead-letter queueksi". Kuolleet kirjeet tallennetaan tietokoneelle, jossa vanhentunut viesti sijaitsee. Lisätietoja aikakatkaisu- ja vanhenemisviesteistä löytyy kohdasta Oletusviestin ominaisuudet.
Raporttijono sisältää viestejä, jotka osoittavat viestin kulkevan reitin määränpäähän, ja se voi sisältää myös testiviestejä. Jokaisella tietokoneella voi olla vain yksi raportointijono.
Omistettu järjestelmäjono on sarja omia jonoja, jotka tallentavat hallinta- ja ilmoitusviestit, joita järjestelmä tarvitsee viestinkäsittelytoimintojen suorittamiseen.
Suurin osa sovelluksessa tehdystä työstä liittyy julkisten jonojen ja niiden viestien avaamiseen. Kuitenkin, riippuen sovelluksen lokikirjauksesta, kuittauksesta ja muista erityisistä käsittelytarpeista, on todennäköistä, että päivittäisissä toiminnoissa käytetään useita eri järjestelmäjonoja.
3. Synkroninen VS. Asynkroninen viestintä
Jonoviestintä on luonteeltaan asynkronista, koska viestien lähettäminen ja vastaanottaminen jonosta tapahtuu eri prosesseissa. Vastaanotto-operaatio voidaan myös suorittaa asynkronisesti, koska viestin vastaanottaja voi kutsua BeginReceive-metodin mihin tahansa jonoon ja jatkaa välittömästi muita tehtäviä odottamatta vastausta. Tämä eroaa hyvin paljon siitä, mitä ihmiset kutsuvat "synkroniseksi viestinnäksi".
Synkronisessa viestinnässä pyynnön lähettäjän on odotettava vastaanottajan vastausta ennen muiden tehtävien suorittamista. Lähettäjän odotusaika riippuu täysin siitä, kuinka kauan vastaanottajalta kestää käsitellä pyyntö ja lähettää vastaus.
4. Vuorovaikutus viestijonojen kanssa
Viestinkäsittely ja viestintä tarjoavat tehokkaan ja joustavan mekanismin prosessien väliseen viestintään palvelinpohjaisten sovelluskomponenttien välillä. Niillä on useita etuja verrattuna suoraan kutsumiseen komponenttien välillä, kuten:
Vakaus – Komponenttien viat vaikuttavat viesteihin paljon vähemmän kuin suorat kutsut komponenttien välillä, sillä viestit tallennetaan jonoon ja pysyvät siellä, kunnes ne käsitellään asianmukaisesti. Viestinkäsittely on samankaltaista kuin transaktioiden käsittely, eli viestinkäsittely on taattua. Viestien priorisointi – Kiireellisempiä tai tärkeämpiä viestejä voidaan vastaanottaa ennen suhteellisen merkityksettömiä viestejä, joten voit taata riittävän vastausajan kriittisille sovelluksille. Offline-ominaisuus – Kun viestejä lähetetään, ne voidaan lähettää väliaikaiseen jonoon ja pysyä siellä, kunnes ne toimitetaan onnistuneesti. Kun haluttuun jonoon pääsy ei ole saatavilla mistä tahansa syystä, käyttäjä voi jatkaa toimintoa. Samaan aikaan muut toiminnot voivat jatkua ikään kuin viesti olisi käsitelty, koska viestin toimitus on taattu, kun verkkoyhteys palautetaan. Transaktionaalinen viestinkäsittely – Yhdistä useita toisiinsa liittyviä viestejä yhdeksi transaktioksi, jotta viestit toimitetaan peräkkäin, vain kerran, ja ne voidaan palauttaa onnistuneesti kohdejonosta. Jos virheitä ilmenee, koko tapahtuma peruutetaan. Turvallisuus – MessageQueue-komponentin pohjana oleva viestijonotusteknologia käyttää Windows Securityä suojatakseen käyttöoikeuksien hallinnan, tarkastaakseen auditointia sekä salatakseen ja todentaakseen komponentin lähettämät ja vastaanotetut viestit.
5. Kirjoita yksinkertainen viestijono-ohjelma .Net-ympäristöön
(1) Asenna ensin viestijonopalvelut
Asenna MSMQ Ohjauspaneelin kautta, "Lisää/poista ohjelmat" – "Lisää/poista Windows-komponentit" -vaiheen.
MSMQ voidaan asentaa joko työryhmä- tai toimialatilaan. Jos asentaja ei löydä palvelinta, joka pyörittää viestijonoa ja tarjoaa hakemistopalveluita, se voidaan asentaa vain työryhmätilassa, ja tämän tietokoneen viestijono tukee vain yksityisten jonojen luomista ja suoria yhteyksiä muihin tietokoneisiin, joissa on Message Queues.
(2) Määritä MSMQ
Avoin tietokoneen hallinta – Viestijonon muodostaminen ja MSMQDemo-jonon luominen Yksityisten joneiden alla
(3) Kirjoita koodia – yksinkertaisesti demonstroi MSMQ-objekti
MessageQueue-luokka on kääre "viestijonon" ympärille. MessageQueue-luokka tarjoaa viitteen Message Queue -jonoon. Voit määrittää polun olemassa olevaan resurssiin MessageQueue-konstruktorissa tai luoda uuden jonon palvelimelle. Ennen kuin voit kutsua Lähetä, Peekiä tai vastaanottaa, sinun täytyy liittää uusi MessageQueue-luokan instanssi olemassa olevaan jonoon.
MessageQueue tukee kahta viestinhakutyyppiä: synkronista ja asynkronista. Synkronoidut Peek- ja Receive-metodit saavat prosessisäikeen odottamaan uuden viestin saapumista jonoon määrätyllä väliajalla. Asynkroniset BeginPeek- ja BeginReceive-metodit mahdollistavat pääsovellustehtävän jatkamisen erillisessä säikeessä ennen kuin viesti saapuu jonoon. Nämä menetelmät toimivat käyttämällä callback-objekteja ja tilaobjekteja helpottamaan tiedonvälistä viestintää säikeiden välillä.
Lähdekoodin lataus:
Turistit, jos haluatte nähdä tämän postauksen piilotetun sisällön, olkaa hyvä Vastaus
|