rabbitmq&dataflows
.NETツールのRabbitMQライブラリは、 RabbitMQ.Clientの高いサービスを迅速に開発するのに役立ちます。
状態
更新: 05/03/2024
テストサーバー: Windows 11 Pro (v10.0.22631 [Build 22631])
rabbitmqサーバー: v3.13.2
エルラン: v26.2.5
なぜrabbitmq駆動のデータフローを作成するのですか?
Dataflows 、すべてのファーストクラスの市民として、構成可能な並行性、シリアル化、監視、圧縮、暗号化があります。このパラダイムにより、開発者は重要なことに集中することができます - 仕事を成し遂げることができます!
RabbitMQ.Dataflowsで準備ができているいくつかの機能を以下に示します。
ワークフロー
- パイプライン(V1)は、軽量のワークフロー風の機能としてステップの執行者です。
- すべてのステップが順序で処理され、実行順序を制御できるようになりました。
- 構成可能な並列性と並行性が組み込まれています。
- 自動オペンテレメトリーはありません。
- 自動例外キャッチング/非同期エラー処理(スローされた例外がパイプラインを殺します)。
- データフロー(V2)は、より複雑でありながら完全なワークフロークラスです。
- すべてのステップが順序で処理され、実行順序を制御できるようになりました。
- 構成可能な並列性と並行性が組み込まれています。
- 非同期処理、バッチ処理、消費者のクローニングなど!
- 非同期エラー処理(関数がスローできるようにすることで機能的なエラー処理を簡素化します)。
- Autopublish(次のキュー)機能が組み込まれています。
- パブリッシュ/コンシューマー用のネイティブ分散トレースを使用したオペンテレメトリー。
ビルトイン
- rabbitmq
IConnectionPoolとIChannelPool (接続耐久性)。 - Loghelpers Static Singletonを介して
ILogger<T>をサポートします。 - 契約された
IWorkState 、機能的な一般的なリターンと統合を簡素化します。 -
System.Text.JsonとMessagePackのISerializationProviderサポートがあります。 -
ICompressionProviderが組み込み、GZIP、DEFLATE、Brotli、およびLZ4のサポートが組み込まれています。 -
IEncryptionProviderが組み込み、AESGCMおよびBouncycastle AESGCMのサポートが組み込まれています。 -
ICompressionProviderおよびIEncryptionProviderのRecyclablememoryStreamオプション。 - パブリッシャーは、シームレスな暗号化/復号化の手順をオートパブリッシュします(ヘッダーも追加)。
- 消費者は、シームレスな圧縮/減圧ステップ(ヘッダーを使用)を許可します。
- 出版社/消費者には、
OpenTelemetryサポートが組み込まれています。
テスト
- すべての組み込み手順には、エンドユーザー開発者から懸念を削除する統合テストがあります。
- 将来のケースには、時間が許す限り、はるかに複雑な抽象的な不明瞭さが含まれます。
- 開発者は、機能的なビジネスコードをユニットテストするだけでいいはずです。
ガイド、コード、および例
- rabbitmq.dataflows connectionpoolを開始します。
- rabbitmq.dataflows channelpoolを開始します。
- Rabbitmq.DataFlows ChannelPoolとBasicPublishを始めましょう。
- Rabbitmq.DataFlows ChannelPoolとBasicGetを開始します。
- Rabbitmq.DataFlows ChannelPoolとBasicConsumeを始めましょう。
- rabbitmq.dataflowsシリアル化を開始します。
- rabbitmq.dataflows Publisherを開始します。
- rabbitmq.dataflows autopublisherを始めます。
- rabbitmq.dataflowsの消費者を始めます。
- Rabbitmq.DataFlows ConsumerDataFlowを始めましょう。
もっと来て、視覚補助具は底に向かって見つけることができます!
また、 tests/UnitTestsまたはtests/RabbitMQ.Console.Testプロジェクト内のさまざまなライブラリの例を見つけることもできます。
メインのrabbitmqライブラリ
houseofcat.rabbitmq
rabbitmq接続とチャネル管理に焦点を当てたライブラリは、フォールトトレラントパブリッシャーと消費者を作成します。
以前はcookedrabbit.core/tesseractと呼ばれていました。
データフローライブラリ
houseofcat.dataflows
rabbitmq.dataflowsのベースマジックデータフローを提供するライブラリ。
- カスタムTPLブロック-ChannelBockチャンネルベースの
BufferBlock<TIn> - DataFlowengineとChannelBlockengineがあります。
- パイプライン(データフローの代替)があります。
コア生産性ライブラリ
これらのライブラリは、メッセージの強力なデータフローを構築するのに役立つためにここにあります。
Houseofcat.Serialization
.NET ISerializationProviderまたはインターフェイスのコレクションを備えたライブラリ。
- messagepack and System.text.jsonとnewtonsoft.jsonをサポートしています。
houseofcat.compression
.NET ICompressionProviderまたはインターフェイスのコレクションを備えたライブラリ。
- LZ4、GZIP、Brotli、およびDeflateをサポートします。
- Recyclablememorystreamバリアントをサポートします。
houseofcat.hashing
ハッシュの実装に焦点を当てたライブラリ。
houseofcat.encryption
暗号化契約とベースAesGCM / AesCBC .NET IEncryptionProviderと、独自のインターフェイスを提供するライブラリ。
- CryptoStreamを介してAESCBCをサポートします(暗号化されたファイル/メモリストリームに適しています)。
- .NET AESGCM 128、192、256(非ストリーム)をサポートします。
- bouncycastle aesgcm 128/192/256をサポートしています。
- Recyclablememorystreamバリアントをサポートします。
houseofcat.utilities
汎用の再利用可能な関数とコーディングエクスペリエンスを簡素化する拡張機能に焦点を当てたライブラリ。
非批判的なライブラリ統合
houseofcat.data
データの操作と変換のためのヘルパークラスを提供するライブラリ。
また、データベースの抽象化、シンプルなダッパー統合、およびSQLKATA統合SQLクエリ生成も提供します。
データベース接続ファクトリーサポート
- system.data.sqlclient
- Microsoft.data.sqlclient
- mysql.data.mysqlclient
- npgsq
- mysql.data
- オラクル
- sqlite
視覚補助
以下にスクリーンショットを備えた高レベルのExcalidRawファイルを含めました。より良い品質とより最新の情報を得るために、ファイルを必ず開きます。目標はここにすべてを置くことではありませんが、私自身も、視覚援助を追加したライブラリの流れを理解しています。このライブラリには本当に特別なものは何もありません。それは基本だけですが、後退するときに多くの可動部分があります。
Rabbitservice-ライフサイクルを開始します

消費者 - ライフサイクルを開始します

ConsumerDataFlow-データフロー

houseofcat.io