Rabbitmq & DataFlows
Eine Rabbitmq -Bibliothek mit .NET -Tools, um schnell gut leistungsfähige Dienste zu entwickeln oder nur die dauerhafte Konnektivität mit dem RabbitMQ.Client zu verwalten!
Status
Aktualisiert: 05/03/2024
Testserver: Windows 11 Pro (v10.0.22631 [Build 22631])
Rabbitmq Server: v3.13.2
Erlang: v26.2.5
Warum einen rabbitmq -tosierten Datenflow machen?
Dataflows haben konfigurierbare Parallelität, Serialisierung, Überwachung, Komprimierung und Verschlüsselung als erstklassige Bürger. Dieses Paradigma ermöglicht es Entwicklern, sich nur auf die wichtigen Dinge zu konzentrieren - die Arbeit zu erledigen!
Hier sind einige Funktionen mit RabbitMQ.Dataflows .
Workflows
- Pipelines (V1) sind leichte Workflow-isque-Funktionsfunktionen wie Schritt.
- Alle Schritte bearbeiten in der angegebenen Reihenfolge, sodass Sie die Ausführung der Ausführung weiterhin steuern können.
- Konfigurierbare Parallelität und Parallelität integriert.
- Keine automatische Opentelemetrie.
- Kein automatisches Ausnahmefang/asynchronisiertes Fehlerbehebung (geworfene Ausnahmen töten Pipelines).
- DataFlows (V2) sind die komplexere, dennoch vollständige Workflow -Klasse.
- Alle Schritte bearbeiten in der angegebenen Reihenfolge, sodass Sie die Ausführung der Ausführung weiterhin steuern können.
- Konfigurierbare Parallelität und Parallelität integriert.
- ASYNC -Verarbeitung, Batch -Verarbeitung, Verbraucherklonen und mehr!
- ASYNC -Fehlerbehandlung (Vereinfachen Sie die Funktionsfehlerbehandlung, indem Sie Funktionen werfen lassen).
- Autoperish-Funktionalität (zur nächsten Warteschlange) integriert.
- Opentelemetrie mit natives verteilter Verfolgung für Veröffentlichungen/Verbraucher.
Eingebaut
- Eine Rabbitmq
IConnectionPool und IChannelPool (Verbindungsdauer). - Unterstützt
ILogger<T> über Loghelpers statische Singleton. - Contracted
IWorkState vereinfacht funktionale generische Renditen und Integration. - Hat
ISerializationProvider -Unterstützung für System.Text.Json und MessagePack .- Einfach Ihre eigenen Anbieter zu schreiben.
- Hat
ICompressionProvider integrierte Unterstützung für Gzip, Deflate, Brotli und LZ4. - Hat
IEncryptionProvider integriert, um AESGCM und Bouncycastle AESGCM zu unterstützen. - RecyclablememoryStream -Optionen für
ICompressionProvider und IEncryptionProvider . - Publishers autoprisch nahtlose Verschlüsselungs-/Entschlüsselungsschritte (fügt auch Header hinzu).
- Verbraucher erlauben nahtlose Komprimierung/Dekompressionsschritte (verwendet Header).
- Publisher/Verbraucher haben eine integrierte
OpenTelemetry .
Testen
- Alle integrierten Schritte haben Integrationstests, die Bedenken vom Endbenutzerentwickler entfernen sollten.
- Der zukünftige Fall wird viel komplexere abstraktere Unittesting enthalten, wie es die Zeit zulässt.
- Der Entwickler sollte nur Einheitstest sein funktionaler Geschäftscode testen müssen.
Führer, Code und Beispiele
- Erste Schritte mit Rabbitmq.Dataflows ConnectionPool.
- Erste Schritte mit Rabbitmq.Dataflows ChannelPool.
- Erste Schritte mit Rabbitmq.Dataflows Channelpool und BasicPublish.
- Erste Schritte mit Rabbitmq.Dataflows ChannelPool und BasicGet.
- Erste Schritte mit Rabbitmq.Dataflows Channelpool und BasicConsume.
- Erste Schritte mit Rabbitmq.Dataflows Serialisierung.
- Erste Schritte mit Rabbitmq.Dataflows Publisher.
- Erste Schritte mit Rabbitmq.Dataflows Autopublisher.
- Erste Schritte mit Rabbitmq.Dataflows Consumer.
- Erste Schritte mit Rabbitmq.Dataflows ConsumerDataflow .
Weitere und visuelle Hilfsmittel finden Sie unten!
Sie können auch verschiedene Bibliotheksbeispiele in den tests/UnitTests oder das tests/RabbitMQ.Console.Test -Projekt finden.
Hauptkabbitmq -Bibliothek
Houseofcat.Rabbitmq
Eine Bibliothek, die sich auf Rabbitmq -Verbindung und Kanalverwaltung konzentriert, um tolerante Verlage und Verbraucher für Fehler zu erstellen.
Früher als Cookedrabbit.Core/Tesseract bezeichnet.
DataFlow -Bibliothek
Houseofcat.Dataflows
Eine Bibliothek, die die Basismagiedatenflows für Rabbitmq.dataflows bereitstellt.
- Benutzerdefinierte TPL -Block - ChannelBock als kanalbasiertes
BufferBlock<TIn> verwendet - Hat DataFlowEngine und ChannelBlockEngine.
- Hat Pipelines (DataFlow -Alternative).
Kernproduktivitätsbibliotheken
Diese Bibliotheken helfen Ihnen, leistungsstarke Datenflows für Ihre Nachrichten zu erstellen.
Houseofcat.Serialisierung
Eine Bibliothek mit einer Sammlung von .NET ISerializationProvider oder der Schnittstelle, um Ihre eigenen zu erstellen.
- Unterstützt MessagePack und System.text.json und newtonsoft.json.
Houseofcat.compression
Eine Bibliothek mit einer Sammlung von .NET ICompressionProvider oder der Schnittstelle, um Ihre eigenen zu erstellen.
- Unterstützt LZ4, Gzip, Brotli und Deflate.
- Unterstützt RecyclablememoryStream -Varianten.
Houseofcat.Hashing
Eine Bibliothek, die sich auf die Implementierung von Hashing konzentriert.
Houseofcat.Cryption
Eine Bibliothek, die Verschlüsselungsverträge und die Basis AesGCM / AesCBC .NET IEncryptionProvider sowie die Schnittstelle zur Herstellung Ihrer eigenen anbietet.
- Unterstützt AESCBC über Cryptostream (gut für verschlüsselte Datei/Speicherstreams).
- Unterstützt .NET AESGCM 128, 192, 256 (Nicht-Streams).
- Unterstützt Bouncycastle AESGCM 128/192/256.
- Unterstützt RecyclablememoryStream -Varianten.
Hauseofcat.utilities
Eine Bibliothek, die sich auf allgemeine Zwecke und Erweiterungen konzentriert, die die Codierungserfahrung vereinfachen.
Nichtkritische Bibliotheksintegrationen
Houseofcat.Data
Eine Bibliothek, die die Helferklassen für Datenmanipulation und -Transformation bietet.
Bietet auch Datenbankabstraktionen, eine einfache Dapper -Integration und eine SQLKATA -Integration SQL -Abfrageerzeugung.
Datenbankverbindungsfabrikunterstützung
- System.data.sqlclient
- Microsoft.data.sqlclient
- Mysql.data.mysqlclient
- NPGSQ
- Mysql.data
- Orakel
- Sqlite
Visuelle Hilfsmittel
Ich habe eine hochrangige Excalidraw -Datei mit Screenshots unten aufgenommen. Öffnen Sie die Datei jedoch für eine bessere Qualität und aktuellere Informationen, da ich sie im Laufe der Zeit weiter verbessern werde. Das Ziel ist nicht, hier alles drin zu haben, aber ich selbst verstehe den Fluss einer Bibliothek mit einer visuellen Hilfe. Diese Bibliothek ist nichts Besonderes, es sind nur die Grundlagen, aber es gibt viele bewegliche Teile, wenn Sie zurücktreten.
Kaninchenservice - Lebenszyklus beginnen

Verbraucher - Lebenszyklus beginnen

ConsumerDataflow - Datenfluss

Houseofcat.io