inleiding
Op sommige plaatsen worden berichtwachtrijen gebruikt om de nauwkeurigheid van informatieverwerking te waarborgen. In situaties met hoge gelijktijdigheid voeren websites bijvoorbeeld gegevensverwerking uit. Vandaag bevat dit artikel een eenvoudige demo van RabbitMQ. Voordat je dit artikel betreedt, moet de RbMQ-omgeving vooraf geïnstalleerd zijn (omdat ik eerder de lokale RbMQ-omgeving heb geïnstalleerd, en ik bang ben dat verwijderen problemen veroorzaakt omdat het register niet schoon is, dus ik zal de installatie van de omgeving hier niet registreren).
Omgeving & Hulpmiddelen
>Windows 10-systeem
>RabbitMQ Milieudiensten
>VS 2017
Sms
1: Maak twee nieuwe consoleapplicaties, namelijk "RabbitMQClient" en "RabbitMQServer".
2: Raadpleeg de "RabbitMQ.Client" dll
3: In het RabbitMQClient-project, Program.cs, plak de volgende code
4: In het RabbitMQServer-project plakt Program.cs de volgende code de volgende code
5: F5 om het RabbitMQServer-project te starten, voer in de console de informatie in en druk op enter.
6: Sluit de RabbitMQServer-projectconsole niet, klik met de rechtermuisknop op het RabbitMQClient-project - > "Debug" - > "Start een nieuwe instantie"
Je kunt informatie invoeren in de RabbitMQServer-console aan de rechterkant om deze links weer te geven. Het RabbitMQServer-project produceert berichten. Het RabbitMQClient-project verwerkt (consumeert) berichten. Dit is de producent en consument in de berichtwachtrij. De code omvat ook routering en kanalen.
Aan de kant van de berichtproducent plaats je de te verwerken informatie in de berichtwachtrij. Na ontvangst van het bericht kan de consument deze gegevens dienovereenkomstig verwerken.
Als de omgeving geïnstalleerd is, zou het lokale standaardpoortadres http://localhost:15672/#/queues moeten zijn. Je kunt direct toegang krijgen tot het gastaccount, of je kunt het account en de bijbehorende rechten configureren door op de commandoregel te tikken.
De informatie die je net in de RabbitMQServer-console hebt ingevoerd, bestaat eigenlijk eerst in de berichtenwachtrij; je kunt eerst het RabbitMQClient-venster sluiten, dan een paar stukjes informatie invoeren in het venster, de berichtwachtrij observeren, en je ziet dat er drie gegevens in de wachtrij staan.
Wanneer ons RabbitMQClient-venster start, verdwijnt het bericht automatisch uit de berichtwachtrij nadat het het normaal heeft ontvangen. Dit is het bevestigingsmechanisme van de berichtwachtrij; zodra de benodigde informatie correct is ontvangen, zal de consument een toestand teruggeven aan de berichtwachtrij om het bericht te vernietigen. Als de consument het bericht niet ontvangt, of als er een uitzondering is en deze statuswaarde niet teruggeeft, blijft het bericht in de wachtrij totdat het bericht normaal is verwerkt, wat de nauwkeurigheid van het bericht waarborgt.
Epiloog
Helaas zijn er maar weinig plekken waar ik berichtwachtrijen gebruik in mijn projecten. Zonder diepgaand begrip worden alleen de basisprincipes gebruikt.
Er zit een gat in de bovenstaande demo, en de verbinding van RbMQ in RabbitMQClient heeft een extra laag van gebruik. Omdat het een asynchrone thread is, zal dit ervoor zorgen dat het programma draait en de RbMQ-verbinding recyclet voordat het het bericht heeft ontvangen, en er wordt een foutmelding gerapporteerd. De manier om ermee om te gaan is: verwijder het gebruik en laat het handmatig los.
|