C#-Microservices, Teil 2 14.01.2019, 00:00 Uhr

Inhärent asynchron

Wie Sie Microservices mit dem Messaging-System RabbitMQ aufbauen.
Nachdem der grundlegende Aufbau von Microservices mit integriertem Messaging-System in der vorangegangenen Ausgabe der dotnetpro vorgestellt wurde [1], wird der Microservice nun auf Basis des Messaging-Systems RabbitMQ fertiggestellt. Ziel ist ein performantes, inhärent asynchrones System, dessen Services für alle Enterprise Integration Patterns (EIPs) homogen durch das reine Zuschalten zusätzlicher Instanzen skalieren. Praktisch gratis dazu liefert das Messaging-System Mechanismen, die ansonsten irgendwann aufwendig nachgerüstet werden müssten.
Gleich zu Beginn zum schwierigeren Teil: der Topologie für den RPC (Remote Procedure Call, Request-Reply), siehe Bild 1. Die Topologie für den TaskRequest (siehe [1]) wurde dabei weggelassen. Diese entspricht jedoch im Wesentlichen der RPC-Topologie, mit dem Unterschied, dass beim Microservice Producer auf ein Task.Exchange publiziert und der Caller-­Thread nicht geblockt wird. In Bild 1 dienen Virtual.request.exchange und Virtual.reply.exchange nur zur Illustration. Kommt, wie im Beispiel, das Messaging-System RabbitMQ [2] zum Einsatz, braucht es beide nicht. Pseudo.rpc.response.queue ist im Sinne der AMQP-Spezifikation (Advanced Message Queuing Protocol [3] [4]) eine temporäre Response Queue. Wie bereits im ersten Teil erwähnt offeriert RabbitMQ einen effizienteren Weg über Direct Reply Queue. Die temporäre Queue ist also bei einer Implementation nicht erforderlich. Die Grafik zeigt, dass der Client Producer und auch Consumer ist. Dasselbe gilt für den Microservice.

dotnetpro

Sie wollen zukünftig auch von den Vorteilen eines plus-Abos profitieren? Werden Sie jetzt dotnetpro-plus-Kunde
  • 2 Monate Gratis testen
  • Über 4.000 qualifizierte Fachartikel
  • Auf jedem Gerät verfügbar