HouseofCat.Serialization
5.0.0
dotnet add package HouseofCat.Serialization --version 5.0.0
NuGet\Install-Package HouseofCat.Serialization -Version 5.0.0
<PackageReference Include="HouseofCat.Serialization" Version="5.0.0" />
<PackageVersion Include="HouseofCat.Serialization" Version="5.0.0" />
<PackageReference Include="HouseofCat.Serialization" />
paket add HouseofCat.Serialization --version 5.0.0
#r "nuget: HouseofCat.Serialization, 5.0.0"
#:package HouseofCat.Serialization@5.0.0
#addin nuget:?package=HouseofCat.Serialization&version=5.0.0
#tool nuget:?package=HouseofCat.Serialization&version=5.0.0
RabbitMQ & Dataflows
A RabbitMQ library of .NET tools to help rapidly develop well performant services or
to just help manage durable connectivity with the RabbitMQ.Client!
Status
Updated: 05/03/2024
Test Server: Windows 11 Pro (v10.0.22631 [Build 22631])
RabbitMQ Server: v3.13.2
Erlang: v26.2.5
Why Make A RabbitMQ Powered Dataflow?
Dataflows have configurable concurrency, serialization, monitoring, compression, and
encryption all as first class citizens. This paradigm allows developers to just focus on
the important stuff - getting work done!
Here are some features ready with RabbitMQ.Dataflows.
Workflows
- Pipelines (v1) are light weight workflow-esque function-as-step executor.
- All steps process in the order provided allowing you to still control order of execution.
- Configurable parallelism and concurrency built-in.
- No automatic OpenTelemetry.
- No automatic exception catching/async error handling (thrown exceptions kill Pipelines).
- Dataflows (v2) are the more complex, yet complete, workflow class.
- All steps process in the order provided allowing you to still control order of execution.
- Configurable parallelism and concurrency built-in.
- Async processing, batch processing, consumer cloning and more!
- Async error handling (simplify functional error handling by allowing functions to throw).
- AutoPublish (to the next Queue) functionality built-in.
- OpenTelemetry with native distributed tracing for Publish/Consumer.
Built-Ins
- A RabbitMQ
IConnectionPoolandIChannelPool(connection durability). - Supports
ILogger<T>via LogHelpers static singleton. - Contracted
IWorkStatesimplifies functional generic returns and integration. - Has
ISerializationProvidersupport forSystem.Text.JsonandMessagePack.- Easy to write your own providers.
- Has
ICompressionProviderbuilt-in support for Gzip, Deflate, Brotli, and LZ4. - Has
IEncryptionProviderbuilt-in support for AesGcm and BouncyCastle AesGcm. - RecyclableMemoryStream options for
ICompressionProviderandIEncryptionProvider. - Publishers AutoPublish seamless encryption/decryption steps (adds headers too).
- Consumers allow seamless compression/decompression steps (uses headers).
- Publisher/Consumers have built-in
OpenTelemetrysupport.
Testing
- All built-in steps will have integration tests that should remove concerns from end-user developer.
- Future case will include much more complex abstract UnitTesting as time allows.
- The developer should only need to unit test their functional business code.
Guides, Code, and Examples
- Getting started with RabbitMQ.Dataflows ConnectionPool.
- Getting started with RabbitMQ.Dataflows ChannelPool.
- Getting started with RabbitMQ.Dataflows ChannelPool and BasicPublish.
- Getting started with RabbitMQ.Dataflows ChannelPool and BasicGet.
- Getting started with RabbitMQ.Dataflows ChannelPool and BasicConsume.
- Getting started with RabbitMQ.Dataflows Serialization.
- Getting started with RabbitMQ.Dataflows Publisher.
- Getting started with RabbitMQ.Dataflows AutoPublisher.
- Getting started with RabbitMQ.Dataflows Consumer.
- Getting started with RabbitMQ.Dataflows ConsumerDataflow.
More to come and visual aids can be found towards the bottom!
You can also find various library examples inside the tests/UnitTests or the tests/RabbitMQ.Console.Test project.
Main RabbitMQ Library
HouseofCat.RabbitMQ
A library that focuses on RabbitMQ connection and channel management to create fault tolerant Publishers and Consumers.
Formerly called CookedRabbit.Core/Tesseract.
DataFlow Library
HouseofCat.Dataflows
A library that provides the base magic Dataflows for RabbitMQ.Dataflows.
- Custom TPL Block - ChannelBock used as a Channel-based
BufferBlock<TIn> - Has DataFlowEngine and ChannelBlockEngine.
- Has Pipelines (Dataflow alternative).
Core Productivity Libraries
These libraries are here to help you build powerful Dataflows for your messages.
HouseofCat.Serialization
A library that has a collection of .NET ISerializationProvider or the interface to make your own.
- Supports MessagePack and System.Text.Json and Newtonsoft.Json.
HouseofCat.Compression
A library that has a collection of .NET ICompressionProvider or the interface to make your own.
- Supports LZ4, Gzip, Brotli, and Deflate.
- Supports RecyclableMemoryStream variants.
HouseofCat.Hashing
A library that focuses on implementing hashing.
- Supports Argon2.
HouseofCat.Encryption
A library that provides encryption contracts and the base AesGCM/AesCBC .NET IEncryptionProvider as
well as the interface to make your own.
- Supports AesCbc via CryptoStream (good for encrypted file/memorystreams).
- Supports .NET AesGcm 128, 192, 256 (non-streams).
- Supports BouncyCastle AesGcm 128/192/256.
- Supports RecyclableMemoryStream variants.
HouseofCat.Utilities
A library that focuses on general purpose re-usable functions and extensions that simplify the coding experience.
Non-Critical Library Integrations
HouseofCat.Data
A library that provides the provides helper classes for data manipulation and transformation.
Also provides Database abstractions, a simple Dapper integration, and SqlKata integration SQL query generation.
Database Connection Factory Support
- System.Data.SqlClient
- Microsoft.Data.SqlClient
- MySql.Data.MySqlClient
- Npgsq
- MySql.Data
- Oracle
- SQLite
Visual Aids
I have included a high level Excalidraw file with screenshots below. Be sure to open the file though for better quality and more up-to-date information as I will continue enhancing it over time. The goal isn't to have everything in here, but I myself understand the flow of a library with the addition of a visual aid. There is nothing truly special about this library, it's just the basics, but there are a lot of moving parts when you step back.
RabbitService - Start Life Cycle
Consumer - Start Life Cycle
ConsumerDataflow - Data Flow
HouseofCat.io
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- HouseofCat.Utilities (>= 5.0.0)
- MessagePack (>= 3.1.4)
- Newtonsoft.Json (>= 13.0.4)
NuGet packages (3)
Showing the top 3 NuGet packages that depend on HouseofCat.Serialization:
| Package | Downloads |
|---|---|
|
HouseofCat.RabbitMQ
RabbitMQ.Dataflows library helps use RabbitMQ as well as create powerful RabbitMQ powered workflows. |
|
|
HouseofCat.Dataflows
RabbitMQ.Dataflows library helps use RabbitMQ as well as create powerful RabbitMQ powered workflows. |
|
|
HouseofCat.Data
RabbitMQ.Dataflows library helps use RabbitMQ as well as create powerful RabbitMQ powered workflows. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 5.0.0 | 60 | 3/24/2026 |
| 4.1.5 | 1,452 | 5/2/2024 |
| 4.1.4 | 247 | 5/2/2024 |
| 4.1.3 | 206 | 5/2/2024 |
| 4.1.2 | 257 | 5/1/2024 |
| 4.1.1 | 242 | 4/29/2024 |
| 4.1.0 | 249 | 4/29/2024 |
| 4.0.0 | 284 | 4/19/2024 |
| 3.2.2 | 652 | 3/28/2024 |
| 3.2.1 | 642 | 3/28/2024 |
| 3.2.0 | 317 | 3/27/2024 |
| 3.1.3 | 295 | 3/27/2024 |
| 3.1.2 | 351 | 3/26/2024 |
| 3.1.1 | 514 | 3/26/2024 |
| 3.1.0 | 300 | 3/26/2024 |
| 3.0.0 | 398 | 3/20/2024 |
Major overhaul!