Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 304494|Antwoord: 72

[Bron] c# Het gebruik van de berichtenwachtrij MessageQueue met broncode

  [Link kopiëren]
Geplaatst op 14-12-2016 13:51:37 | | | |

Met MSMQ (Microsoft Message Queue) kunnen applicatieontwikkelaars snel en betrouwbaar communiceren met applicaties door berichten te verzenden en ontvangen. Berichtverwerking biedt u een betrouwbare failsafe methode voor gegarandeerde berichtenverdeling en het uitvoeren van veel bedrijfsprocessen.

MSMQ is, net als XML Web Services en .Net Remoting, een gedistribueerde ontwikkeltechnologie. Bij gebruik van XML Web Services of .Net Remote-componenten moet de client echter informatie in realtime uitwisselen met de server, en moet de server online blijven. MSMQ kan werken wanneer de server offline is, waarbij het bericht tijdelijk wordt opgeslagen in de berichtwachtrij aan de clientzijde en vervolgens naar de server wordt gestuurd voor verwerking wanneer het online is.

Het is duidelijk dat MSMQ niet geschikt is voor situaties waarin de client tijdig van de server moet reageren, en MSMQ asynchroon met de server communiceert, dus er is geen reden om je zorgen te maken over het lang wachten tot de server verwerkt.



Hoewel zowel XML Web Services als .Net Remoting de [OneWay]-eigenschap bieden om asynchrone aanroepen af te handelen, wordt deze gebruikt om het probleem op te lossen van lange methode-aanroepen aan de serverzijde die de clientzijde lange tijd blokkeren. Het kan echter het probleem van grote clientbelasting niet oplossen, en de server accepteert verzoeken sneller dan hij kan verwerken.

In het algemeen wordt het [OneWay]-attribuut niet gebruikt in gespecialiseerde berichtendiensten.



1. Basistermen en concepten

Een "bericht" is een gegevenseenheid die tussen twee computers wordt verzonden. Berichten kunnen heel eenvoudig zijn, zoals alleen tekststrings bevatten; Het kan ook complexer zijn en kan ingebedde objecten bevatten.



Berichten worden naar de wachtrij gestuurd. Een "berichtwachtrij" is een container die berichten vasthoudt tijdens hun verzending. De bericht wachtrijbeheerder fungeert als tussenpersoon bij het doorgeven van berichten van de bron naar de bestemming. Het hoofddoel van een wachtrij is het verzorgen van routing en het garanderen van de bezorging van berichten; Als de ontvanger niet beschikbaar is wanneer het bericht wordt verzonden, houdt de berichtwachtrij het bericht vast totdat het succesvol kan worden afgeleverd.



"Message Queuing" is Microsofts berichtverwerkingstechnologie die berichtverwerking en berichten in wachtrij biedt voor elke applicatie in elke combinatie van computers met Microsoft Windows geïnstalleerd, ongeacht of ze zich op hetzelfde netwerk bevinden of tegelijkertijd online zijn.



Een "berichtenwachtrijnetwerk" is elke groep computers die berichten heen en weer naar elkaar kunnen sturen. Verschillende computers in een netwerk spelen verschillende rollen om ervoor te zorgen dat berichten soepel worden verwerkt. Sommige geven routeringsinformatie om te bepalen hoe berichten verzonden moeten worden, sommige bevatten belangrijke informatie over het hele netwerk, en sommige verzenden en ontvangen simpelweg berichten.



Tijdens de installatie van de Message Queue bepalen beheerders welke servers met elkaar kunnen communiceren en stellen ze speciale rollen in voor specifieke servers. De computers die dit netwerk van "berichtwachtrijen" vormen, worden "sites" genoemd, en ze zijn met elkaar verbonden via "site links." Elke sitelink heeft een bijbehorende "overhead" die door de beheerder wordt bepaald en aangeeft hoe vaak berichten via deze sitelink worden geleverd.



De Message Queue-beheerder stelt ook één of meer computers in het netwerk op die fungeren als Routingservers. De routeringsserver kijkt naar de overhead van elke sitelink om de snelste en meest efficiënte manier te bepalen om een bericht via meerdere sites te bezorgen en zo te bepalen hoe het bericht kan worden afgeleverd.



2. Wachtrijtype

Er zijn twee hoofdtypen wachtrijen: wachtrijen die door u of andere gebruikers in uw netwerk zijn aangemaakt, en systeemwachtrijen.

Een door gebruikers gemaakte wachtrij kan uit een van de volgende bestaan:

Publieke wachtrijen worden gerepliceerd over het gehele Message Queue-netwerk en kunnen worden benaderd door alle sites die op het netwerk zijn aangesloten.

Privéwachtrijen worden niet over het hele netwerk gepubliceerd. In plaats daarvan zijn ze alleen beschikbaar op de lokale computer waar ze zich bevinden. Privéwachtrijen kunnen alleen worden benaderd door applicaties die de volledige padnaam of het label van de wachtrij kennen.

De Management Queue bevat berichten die de ontvangst van berichten bevestigen die in een bepaald Message Queue-netwerk zijn verzonden. Specificeer de managementwachtrij die je wilt dat de MessageQueue-component gebruikt, indien aanwezig.

De Response Queue bevat de antwoordberichten die worden teruggestuurd naar de verzendende applicatie wanneer de doelapplicatie het bericht ontvangt. Geef de responswachtrij aan die je wilt dat de MessageQueue-component gebruikt, indien aanwezig.



De wachtrijen die door het systeem worden gegenereerd, worden doorgaans onderverdeeld in de volgende categorieën:

Journal Queue slaat optioneel kopieën op van verzonden berichten en kopieën van berichten die uit de wachtrij zijn verwijderd. Een enkele journal queue op elke Message Queue-client slaat een kopie op van berichten die van die computer zijn verzonden. Voor elke wachtrij op de server wordt een aparte dagboekwachtrij aangemaakt. Dit journal houdt berichten bij die uit die wachtrij worden verwijderd.

De Dead Letter Queue bewaart kopieën van berichten die niet kunnen worden afgeleverd of verlopen zijn. Als een bericht dat verloopt of niet kan worden afgeleverd transactioneel is, wordt het opgeslagen in een speciale dode letterwachtrij die een "transactionele dode briefwachtrij" wordt genoemd. Dode letters worden opgeslagen op de computer waar het verlopen bericht zich bevindt. Voor meer informatie over time-out en vervalberichten, zie Eigenschappen van standaardberichten.

De Report Queue bevat berichten die aangeven welke route het bericht neemt om de bestemming te bereiken, en kan ook testberichten bevatten. Er kan maar één rapportagewachtrij op elke computer zijn.

Een speciale systeemwachtrij is een reeks toegewijde wachtrijen die de beheer- en meldingsberichten opslaan die een systeem nodig heeft om berichtverwerkingsoperaties uit te voeren.

Het meeste werk in de applicatie bestaat uit het benaderen van publieke wachtrijen en hun berichten. Afhankelijk van de journaling-, bevestigings- en andere speciale verwerkingsbehoeften van de applicatie is het echter waarschijnlijk dat er meerdere verschillende systeemwachtrijen worden gebruikt in de dagelijkse operaties.



3. Synchrone versus asynchrone communicatie

Wachtrijcommunicatie is van nature asynchroon omdat het verzenden van berichten naar en het ontvangen van berichten vanuit de wachtrij in verschillende processen gebeurt. Ook kan de ontvangstoperatie asynchroon worden uitgevoerd, omdat de persoon die het bericht wil ontvangen de BeginReceived-methode naar een willekeurige wachtrij kan aanroepen en direct doorgaat met andere taken zonder op antwoord te wachten. Dit is heel anders dan wat mensen kennen als "synchrone communicatie".



Bij synchrone communicatie moet de verzender van het verzoek wachten op een antwoord van de beoogde ontvanger voordat hij andere taken uitvoert. De tijd die de afzender wacht hangt volledig af van de tijd die de ontvanger nodig heeft om het verzoek te verwerken en het antwoord te versturen.



4. Interactie met berichtwachtrijen

Berichtverwerking en messaging bieden een krachtig en flexibel mechanisme voor interprocescommunicatie tussen servergebaseerde applicatiecomponenten. Ze bieden verschillende voordelen ten opzichte van directe aanroep tussen componenten, waaronder:

Stabiliteit – Componentstoringen beïnvloeden berichten veel minder dan directe oproepen tussen componenten, omdat berichten in een wachtrij worden opgeslagen en daar blijven totdat ze correct zijn verwerkt. Berichtverwerking lijkt op transactieverwerking doordat berichtverwerking gegarandeerd is.
Prioriteit van berichten – Dringendere of belangrijkere berichten kunnen eerder worden ontvangen dan relatief onbelangrijke berichten, zodat u voldoende responstijd voor kritieke toepassingen kunt garanderen.
Offline functionaliteit – Wanneer berichten worden verzonden, kunnen ze naar een tijdelijke wachtrij worden gestuurd en daar blijven totdat ze succesvol zijn afgeleverd. Wanneer toegang tot de gewenste wachtrij om welke reden dan ook niet beschikbaar is, kan de gebruiker doorgaan met de actie. Tegelijkertijd kunnen andere bewerkingen doorgaan alsof het bericht is verwerkt, omdat de berichtaflevering gegarandeerd is wanneer de netwerkverbinding wordt hersteld.
Transactionele berichtverwerking – Koppel meerdere gerelateerde berichten in één transactie om ervoor te zorgen dat berichten achtereenvolgens worden afgeleverd, slechts één keer, en succesvol kunnen worden opgehaald uit hun bestemmingswachtrij. Als er fouten zijn, wordt de volledige transactie geannuleerd.
Security – De message queuing-technologie waarop de MessageQueue-component is gebaseerd, gebruikt Windows Security om toegangscontrole te beveiligen, auditing te bieden en berichten die door de component worden verzonden en ontvangen te versleutelen en authenticeren.


5. Schrijf een eenvoudig berichtwachtrijprogramma in de .Net-omgeving

(1) Eerst Message Queuing Services installeren

Installeer MSMQ via het Configuratiescherm, de stap "Programma's toevoegen/verwijderen" – "Windows-componenten toevoegen/verwijderen".

MSMQ kan worden geïnstalleerd in zowel werkgroepmodus als domeinmodus. Als de installer geen server vindt die een berichtenwachtrij draait en directorydiensten levert, kan deze alleen in werkgroepmodus worden geïnstalleerd, en ondersteunt de Berichtwachtrij op deze computer alleen het aanmaken van privéwachtrijen en het aanmaken van directe verbindingen met andere computers die berichtwachtrijen draaien.



(2) MSMQ configureren

Open Computer Management – Message Queuing en maak een MSMQDemo-wachtrij aan onder Private Queues


(3) Code schrijven - gewoon het MSMQ-object demonstreren

De MessageQueue-klasse is een wrapper rond een "message queue". De MessageQueue-klasse biedt een verwijzing naar de Message Queue-wachtrij. Je kunt een pad naar een bestaande resource specificeren in de MessageQueue-constructor, of je kunt een nieuwe wachtrij op de server aanmaken. Voordat je Verzenden, Peek of Ontvangen kunt aanroepen, moet je een nieuwe instantie van de MessageQueue-klasse koppelen aan een bestaande wachtrij.



MessageQueue ondersteunt twee soorten berichtopvraging: synchroon en asynchroon. De gesynchroniseerde Peek and Receive methoden zorgen ervoor dat de procesthread wacht op een nieuw bericht dat op een bepaald interval bij de wachtrij aankomt. De asynchrone BeginPeek- en BeginReceived-methoden stellen de hoofdapplicatietaak in staat om in een aparte thread verder te worden uitgevoerd voordat het bericht de wachtrij bereikt. Deze methoden werken door callback-objecten en toestandsobjecten te gebruiken om informatiecommunicatie tussen threads te vergemakkelijken.


Broncode downloaden:

Toeristen, als jullie de verborgen inhoud van dit bericht willen zien, alsjeblieftAntwoord





Vorig:15 goed. .NET
Volgend:C#/.NET leest de broncode van de hashinformatie van de torrenttorrent
Geplaatst op 13-06-2021 20:54:46 |
OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK
Geplaatst op 22-02-2019 11:01:34 |
https://download.csdn.net/download/winrich/9585398
Geplaatst op 21-07-2021 11:20:26 |
Goed, goed
Geplaatst op 21-12-2016 23:04:53 |
Dank u, huisbaas
Geplaatst op 28-12-2016 19:20:26 |
Bekijk deze huidige om deze oefening te doen
Geplaatst op 14-07-2017 16:32:06 |
Dank u, verhuurder。。。。。。。
Geplaatst op 18-10-2017 14:26:45 |
Leer van de groepsleiders
Geplaatst op 24-10-2017 05:39:19 |
Leer het
Geplaatst op 18-11-2017 21:56:57 |
GOOOOOOOOOOOOOD
Geplaatst op 14-12-2017 14:04:20 |
Goede berichten moeten beantwoord worden
Geplaatst op 16-12-2017 21:49:55 |
213123saedwaeas
Geplaatst op 17-12-2017 08:56:11 |
Kijk wat er gezegd wordt
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com