RabbitMQ & Dataflows
Perpustakaan RabbitMQ dari .NET Tools untuk membantu mengembangkan layanan berkinerja baik dengan cepat atau hanya membantu mengelola konektivitas yang tahan lama dengan RabbitMQ.Client !
Status
Diperbarui: 05/03/2024
Test Server: Windows 11 Pro (v10.0.22631 [Build 22631])
Server RabbitMQ: v3.13.2
Erlang: v26.2.5
Mengapa Membuat Dataflow Bertenaga RabbitMQ?
Dataflows memiliki konkurensi yang dapat dikonfigurasi, serialisasi, pemantauan, kompresi, dan enkripsi semuanya sebagai warga negara kelas satu. Paradigma ini memungkinkan pengembang untuk hanya fokus pada hal -hal penting - menyelesaikan pekerjaan!
Berikut adalah beberapa fitur yang siap dengan RabbitMQ.Dataflows .
Alur kerja
- Pipa-pipa (V1) adalah pelaksana fungsi kerja-sebagai-langkah alur kerja yang ringan.
- Semua proses proses dalam urutan yang disediakan memungkinkan Anda untuk tetap mengontrol urutan eksekusi.
- Paralelisme yang dapat dikonfigurasi dan konsumsi bawaan.
- Tidak ada openTelemetri otomatis.
- Tidak ada pengecualian otomatis penanganan kesalahan/async (dilempar pengecualian membunuh pipa).
- DataFlows (V2) adalah kelas alur kerja yang lebih kompleks, namun lengkap.
- Semua proses proses dalam urutan yang disediakan memungkinkan Anda untuk tetap mengontrol urutan eksekusi.
- Paralelisme yang dapat dikonfigurasi dan konsumsi bawaan.
- Pemrosesan async, pemrosesan batch, kloning konsumen dan banyak lagi!
- Penanganan kesalahan async (menyederhanakan penanganan kesalahan fungsional dengan memungkinkan fungsi untuk dilemparkan).
- Autopublish (ke antrian berikutnya) Fungsionalitas built-in.
- OpenTelemetry dengan penelusuran asli terdistribusi untuk publikasi/konsumen.
Built-in
- RabbitMQ
IConnectionPool dan IChannelPool (Daya Daya Koneksi). - Mendukung
ILogger<T> via LogHelpers Static Singleton. - Kontrak
IWorkState menyederhanakan pengembalian dan integrasi generik fungsional. - Memiliki dukungan
ISerializationProvider untuk System.Text.Json dan MessagePack .- Mudah untuk menulis penyedia Anda sendiri.
- Memiliki dukungan bawaan
ICompressionProvider untuk GZIP, mengempis, Brotli, dan LZ4. - Memiliki dukungan bawaan
IEncryptionProvider untuk AESGCM dan Boundcycastle AESGCM. - Opsi RecyclablemoryStream untuk
ICompressionProvider dan IEncryptionProvider . - Penerbit Autopublish Langkah Enkripsi/Dekripsi Seamless (menambahkan header juga).
- Konsumen mengizinkan langkah kompresi/dekompresi yang mulus (menggunakan header).
- Penerbit/konsumen memiliki dukungan
OpenTelemetry bawaan.
Pengujian
- Semua langkah bawaan akan memiliki tes integrasi yang harus menghapus kekhawatiran dari pengembang pengguna akhir.
- Kasus masa depan akan mencakup abstrak yang jauh lebih kompleks tanpa tatapan waktu memungkinkan.
- Pengembang seharusnya hanya perlu menguji unit kode bisnis fungsional mereka.
Panduan, Kode, dan Contoh
- Memulai dengan rabbitmq.dataflows ConnectionPool.
- Memulai dengan rabbitmq.dataflows channelpool.
- Memulai dengan RabbitMQ.DataFlows Channelpool dan BasicPublish.
- Memulai dengan rabbitmq.dataflows Channelpool dan BasicGet.
- Memulai dengan RabbitMQ.DataFlows Channelpool dan BasicConsume.
- Memulai dengan rabbitmq.dataflows serialisasi.
- Memulai dengan RabbitMQ.DataFlows Penerbit.
- Memulai dengan rabbitmq.dataflows Autopublisher.
- Memulai dengan RabbitMQ.DataFlows Konsumen.
- Memulai dengan RabbitMQ.DataFlows ConsumerDataFlow .
Lebih banyak yang akan datang dan alat bantu visual dapat ditemukan di bagian bawah!
Anda juga dapat menemukan berbagai contoh perpustakaan di dalam tests/UnitTests atau tests/RabbitMQ.Console.Test Project.
Perpustakaan Rabbitmq Utama
Houseofcat.rabbitmq
Perpustakaan yang berfokus pada koneksi RabbitMQ dan manajemen saluran untuk membuat penerbit dan konsumen yang toleran terhadap kesalahan.
Sebelumnya disebut cookedrabbit.core/tesseract.
Perpustakaan Dataflow
Houseofcat.dataflows
Perpustakaan yang menyediakan dataflow sihir dasar untuk rabbitmq.dataflows.
- Blok TPL Kustom - ChannelBock Digunakan sebagai
BufferBlock<TIn> - Memiliki dataflowengine dan channelblockengine.
- Memiliki pipa (alternatif DataFlow).
Perpustakaan Produktivitas Inti
Perpustakaan ini ada di sini untuk membantu Anda membangun dataflow yang kuat untuk pesan Anda.
Houseofcat.serialization
Perpustakaan yang memiliki koleksi .NET ISerializationProvider atau antarmuka untuk membuatnya sendiri.
- Mendukung MessagePack dan System.text.json dan NewTonsoft.json.
Houseofcat
Perpustakaan yang memiliki koleksi .NET ICompressionProvider atau antarmuka untuk membuatnya sendiri.
- Mendukung LZ4, GZIP, Brotli, dan mengempis.
- Mendukung varian RecyClablemeMoryStream.
Houseofcat.Hashing
Perpustakaan yang berfokus pada penerapan hashing.
Houseofcat.encryption
Perpustakaan yang menyediakan kontrak enkripsi dan basis AesGCM / AesCBC .NET IEncryptionProvider serta antarmuka untuk membuatnya sendiri.
- Mendukung AESCBC melalui CryptoStream (bagus untuk file/memorystreams terenkripsi).
- Mendukung .NET AESGCM 128, 192, 256 (non-streams).
- Mendukung Bouncycastle AESGCM 128/192/256.
- Mendukung varian RecyClablemeMoryStream.
Houseofcat.utilities
Perpustakaan yang berfokus pada fungsi dan ekstensi yang dapat digunakan kembali dengan tujuan umum yang menyederhanakan pengalaman pengkodean.
Integrasi perpustakaan non-kritis
Houseofcat.data
Perpustakaan yang menyediakan kelas helper untuk manipulasi dan transformasi data.
Juga memberikan abstraksi basis data, integrasi necis sederhana, dan integrasi SQL SQL Query Generation.
Dukungan Pabrik Koneksi Basis Data
- System.data.sqlClient
- Microsoft.data.sqlclient
- Mysql.data.mysqlclient
- NPGSQ
- Mysql.data
- Peramal
- Sqlite
Alat bantu visual
Saya telah menyertakan file Excalidraw tingkat tinggi dengan tangkapan layar di bawah ini. Pastikan untuk membuka file meskipun untuk kualitas yang lebih baik dan lebih banyak informasi terkini karena saya akan terus meningkatkannya dari waktu ke waktu. Tujuannya bukan untuk memiliki segalanya di sini, tetapi saya sendiri memahami aliran perpustakaan dengan penambahan bantuan visual. Tidak ada yang benar -benar istimewa tentang perpustakaan ini, itu hanya dasar -dasarnya, tetapi ada banyak bagian yang bergerak ketika Anda mundur.
Rabbitservice - Mulailah Siklus Hidup

Konsumen - Mulai Siklus Hidup

ConsumerDataFlow - Aliran Data

Houseofcat.io