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