RabbitMQ&DataFlows
一個.NET工具的RabbitMQ庫,以幫助快速開發出色的性能服務,或者只是幫助管理與RabbitMQ.Client的持久連接!
地位
更新: 05/03/2024
測試服務器: Windows 11 Pro (v10.0.22631 [Build 22631])
RabbitMQ服務器: v3.13.2
Erlang: v26.2.5
為什麼要製作兔子驅動的數據流?
Dataflows具有可配置的並發,序列化,監視,壓縮和加密,均為頭等公民。這種範式使開發人員可以專注於重要的工作 - 完成工作!
以下是RabbitMQ.Dataflows的一些功能。
工作流程
- 管道(V1)是輕量工作流動的函數 - 步驟執行器。
- 所有步驟過程中的順序過程提供了允許您仍然控制執行順序。
- 可配置的並行性和並發內置。
- 沒有自動opentelemetry。
- 沒有自動異常捕獲/異步錯誤處理(拋出的異常殺死管道)。
- 數據流(V2)是更複雜的工作流程類。
- 所有步驟過程中的順序過程提供了允許您仍然控制執行順序。
- 可配置的並行性和並發內置。
- 異步處理,批處理處理,消費者克隆等!
- 異步錯誤處理(通過允許函數投擲來簡化功能錯誤處理)。
- 自動發布(下一個隊列)內置功能。
- OpentElemetry具有本機分佈式跟踪的出版/消費者。
內建
- 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 commuterdataflow入門。
還可以在底部找到更多的視覺輔助工具!
您還可以在tests/UnitTests或tests/RabbitMQ.Console.Test項目中找到各種庫示例。
主兔子庫
houseofcat.rabbitmq
一個專注於RabbitMQ連接和頻道管理以創建容錯發布者和消費者的庫。
以前稱為cookedrabbit.core/tesseract。
數據流庫
houseofcat.dataflows
為Rabbitmq.dataflows提供基本魔術數據流的庫。
- 自定義TPL塊-Channelbock用作基於頻道的
BufferBlock<TIn> - 具有DataFlowEngine和ChannelBlockengine。
- 具有管道(數據流替代)。
核心生產力庫
這些庫在這裡可以幫助您為消息構建強大的數據流。
houseofcat.Serialization
具有.NET ISerializationProvider的集合或可以自己製作的界面的庫。
- 支持MessagePack和System.Text.json和Newtonsoft.json。
houseofcat.compression
具有.NET ICompressionProvider或界面的庫,可以自行製作。
- 支持LZ4,GZIP,Brotli和Deflate。
- 支持RecyClableMorystream變體。
houseofcat.hashing
專注於實施哈希的圖書館。
HouseOfcat.Cocryption
提供加密合同的庫以及基本AesGCM / AesCBC .NET IEncryptionProvider以及可以自己製作的接口。
- 通過cryptostream支持AESCBC(適用於加密文件/內存流)。
- 支持.NET AESGCM 128、192、256(非流程)。
- 支持Bouncycastle AESGCM 128/192/256。
- 支持RecyClableMorystream變體。
houseofcat
一個專注於通用的可重複使用功能和擴展的庫,可以簡化編碼體驗。
非關鍵圖書館集成
houseofcat.data
提供提供數據操作和轉換的助手類的庫。
還提供數據庫摘要,簡單的Dapper集成以及SQLKATA集成SQL查詢生成。
數據庫連接工廠支持
- system.data.sqlclient
- microsoft.data.sqlclient
- mysql.data.mysqlclient
- NPGSQ
- mysql.data
- Oracle
- sqlite
視覺輔助工具
我包括了一個高級Excalidraw文件,其中包含以下屏幕截圖。請務必打開文件,以獲取更好的質量和更多最新信息,因為我將隨著時間的推移繼續增強該文件。目的不是要把所有內容都放在這裡,而是我本人可以通過增加視覺援助來理解圖書館的流程。這個圖書館沒有什麼特別的,它只是基礎知識,但是當您退後時,有很多活動部件。
Rabbitservice-開始生命週期

消費者 - 開始生命週期

ConsumerDataFlow-數據流

houseofcat.io