RabbitMQ & DataFlows
ห้องสมุด RabbitMQ ของเครื่องมือ .NET เพื่อช่วยพัฒนาบริการที่มีประสิทธิภาพอย่างรวดเร็วหรือช่วยจัดการการเชื่อมต่อที่ทนทานกับ RabbitMQ.Client !
สถานะ
อัปเดต: 05/03/2024
เซิร์ฟเวอร์ทดสอบ: Windows 11 Pro (v10.0.22631 [Build 22631])
เซิร์ฟเวอร์ RabbitMQ: v3.13.2
Erlang: v26.2.5
ทำไมต้องสร้าง Dataflow RabbitMQ
Dataflows มีการกำหนดค่าพร้อมกันการทำให้เป็นอนุกรมการตรวจสอบการบีบอัดและการเข้ารหัสทั้งหมดในฐานะพลเมืองชั้นหนึ่ง กระบวนทัศน์นี้ช่วยให้นักพัฒนาสามารถมุ่งเน้นไปที่สิ่งสำคัญ - ทำงานให้เสร็จ!
นี่คือคุณสมบัติบางอย่างที่พร้อมใช้งาน RabbitMQ.Dataflows
เวิร์กโฟลว์
- Pipelines (V1) เป็นฟังก์ชั่น Workflow-esque ที่มีน้ำหนักเบา
- ขั้นตอนทั้งหมดดำเนินการตามคำสั่งที่ให้คุณยังคงควบคุมคำสั่งของการดำเนินการ
- ความเท่าเทียมกันที่กำหนดค่าได้และการเกิดขึ้นพร้อมกันในตัว
- ไม่มี opentelemetry อัตโนมัติ
- ไม่มีข้อยกเว้นการจับข้อผิดพลาดโดยอัตโนมัติ/การจัดการข้อผิดพลาดแบบ Async
- DataFlows (V2) เป็นคลาสเวิร์กโฟลว์ที่ซับซ้อน แต่สมบูรณ์มากขึ้น
- ขั้นตอนทั้งหมดดำเนินการตามคำสั่งที่ให้คุณยังคงควบคุมคำสั่งของการดำเนินการ
- ความเท่าเทียมกันที่กำหนดค่าได้และการเกิดขึ้นพร้อมกันในตัว
- การประมวลผล Async การประมวลผลแบบแบทช์การโคลนนิ่งผู้บริโภคและอื่น ๆ !
- การจัดการข้อผิดพลาดของ Async (ทำให้การจัดการข้อผิดพลาดการทำงานง่ายขึ้นโดยอนุญาตให้ฟังก์ชั่นโยน)
- เผยแพร่อัตโนมัติ (ไปยังคิวถัดไป) ในตัว
- Opentelemetry พร้อมการติดตามแบบกระจายดั้งเดิมสำหรับการเผยแพร่/ผู้บริโภค
ในตัว
-
IConnectionPool RabbitMQ และ IChannelPool (ความทนทานต่อการเชื่อมต่อ) - รองรับ
ILogger<T> ผ่าน Loghelpers Static Singleton -
IWorkState ที่ทำสัญญาลดความซับซ้อนของผลตอบแทนทั่วไปและการรวมเข้าด้วยกัน - มีการสนับสนุน
ISerializationProvider สำหรับ System.Text.Json และ MessagePack- ง่ายต่อการเขียนผู้ให้บริการของคุณเอง
- มีการสนับสนุนในตัว
ICompressionProvider สำหรับ GZIP, Deflate, Brotli และ LZ4 - มีการสนับสนุนในตัว
IEncryptionProvider สำหรับ AESGCM และ Bouncycastle AESGCM หรือไม่ - ตัวเลือก RecyclableMemoryStream สำหรับ
ICompressionProvider และ IEncryptionProvider - ผู้เผยแพร่เผยแพร่ขั้นตอนการเข้ารหัส/ถอดรหัสที่ไร้รอยต่ออัตโนมัติ (เพิ่มส่วนหัวด้วย)
- ผู้บริโภคอนุญาตให้มีขั้นตอนการบีบอัด/การบีบอัดอย่างราบรื่น (ใช้ส่วนหัว)
- ผู้เผยแพร่/ผู้บริโภคได้รับการสนับสนุนใน
OpenTelemetry
การทดสอบ
- ขั้นตอนทั้งหมดในตัวจะมีการทดสอบการรวมที่ควรลบข้อกังวลจากผู้พัฒนาปลายทาง
- กรณีในอนาคตจะรวมถึงความไม่แน่นอนเชิงนามธรรมที่ซับซ้อนมากขึ้นเมื่อเวลาอนุญาต
- นักพัฒนาควรต้องทดสอบรหัสธุรกิจที่ใช้งานได้เท่านั้น
คำแนะนำรหัสและตัวอย่าง
- เริ่มต้นใช้งาน RabbitMq.Dataflows ConnectionPool
- เริ่มต้นใช้งาน RabbitMq.Dataflows Channelpool
- เริ่มต้นใช้งาน RabbitMq.Dataflows ChannelPool และ BasicPublish
- เริ่มต้นใช้งาน RabbitMq.Dataflows ChannelPool และ BasicGet
- เริ่มต้นใช้งาน RabbitMq.Dataflows ChannelPool และ BasicConsume
- เริ่มต้นใช้งานกับ Rabbitmq.dataflows Serialization
- เริ่มต้นใช้งาน RabbitMq.Dataflows Publisher
- เริ่มต้นใช้งาน RabbitMq.Dataflows Autopublisher
- เริ่มต้นใช้งานกับ RabbitMq.Dataflows ผู้บริโภค
- เริ่มต้นใช้งาน RabbitMq.Dataflows ConsumerDataflow
เพิ่มเติมที่จะมาและเอดส์ภาพสามารถพบได้ที่ด้านล่าง!
นอกจากนี้คุณยังสามารถค้นหาตัวอย่างห้องสมุดต่าง ๆ ภายใน tests/UnitTests หรือ tests/RabbitMQ.Console.Test Project
ห้องสมุด Main RabbitMQ
houseofcat.rabbitmq
ห้องสมุดที่มุ่งเน้นไปที่การเชื่อมต่อ RabbitMQ และการจัดการช่องสัญญาณเพื่อสร้างผู้เผยแพร่และผู้บริโภคที่ทนต่อความผิดพลาด
เดิมชื่อ cookedrabbit.core/tesseract
Library DataFlow
houseofcat.dataflows
ไลบรารีที่ให้ข้อมูล Magic Dataflows สำหรับ RabbitMq.Dataflows
- บล็อก TPL ที่กำหนดเอง - Channelbock ใช้เป็น
BufferBlock<TIn> - มี dataflowEngine และ channelblockengine
- มีท่อ (ทางเลือก dataflow)
ห้องสมุดการผลิตหลัก
ไลบรารีเหล่านี้อยู่ที่นี่เพื่อช่วยให้คุณสร้างข้อมูลที่ทรงพลังสำหรับข้อความของคุณ
houseofcat.serialization
ห้องสมุดที่มีคอลเลกชันของ. NET ISerializationProvider หรืออินเทอร์เฟซเพื่อสร้างของคุณเอง
- รองรับ MessagePack และ System.Text.json และ Newtonsoft.json
houseofcat.compression
ห้องสมุดที่มีคอลเลกชันของ. NET ICompressionProvider หรืออินเทอร์เฟซเพื่อสร้างของคุณเอง
- รองรับ LZ4, GZIP, Brotli และ Deflate
- รองรับตัวแปร RecyclableMemoryStream
houseofcat.hashing
ห้องสมุดที่มุ่งเน้นการใช้แฮช
houseofcat.encryption
ห้องสมุดที่ให้สัญญาการเข้ารหัสและฐาน AesGCM / AesCBC .NET IEncryptionProvider รวมถึงอินเทอร์เฟซเพื่อสร้างของคุณเอง
- รองรับ AESCBC ผ่าน CryptOstream (เหมาะสำหรับไฟล์/หน่วยความจำที่เข้ารหัส)
- รองรับ. NET AESGCM 128, 192, 256 (ไม่ใช่สตรีม)
- รองรับ bouncycastle aesgcm 128/192/256
- รองรับตัวแปร RecyclableMemoryStream
houseofcat.utilities
ห้องสมุดที่มุ่งเน้นไปที่ฟังก์ชั่นและส่วนขยายที่ใช้งานได้ทั่วไปอีกครั้งซึ่งทำให้ประสบการณ์การเข้ารหัสง่ายขึ้น
การรวมห้องสมุดที่ไม่สำคัญ
houseofcat.data
ห้องสมุดที่จัดเตรียมคลาสผู้ช่วยสำหรับการจัดการข้อมูลและการแปลง
นอกจากนี้ยังมีฐานข้อมูล abstractions การรวม Dapper อย่างง่ายและการสร้างแบบสอบถาม SQLKATA การสร้างแบบสอบถาม SQL
การสนับสนุนโรงงานเชื่อมต่อฐานข้อมูล
- System.data.sqlclient
- microsoft.data.sqlclient
- mysql.data.mysqlclient
- NPGSQ
- mysql.data
- คำพยากรณ์
- sqlite
เครื่องช่วยสายตา
ฉันได้รวมไฟล์ excalidraw ระดับสูงไว้ด้วยภาพหน้าจอด้านล่าง ตรวจสอบให้แน่ใจว่าได้เปิดไฟล์แม้ว่าจะมีคุณภาพที่ดีขึ้นและข้อมูลที่ทันสมัยมากขึ้นเพราะฉันจะปรับปรุงต่อไปตลอดเวลา เป้าหมายไม่ได้มีทุกอย่างที่นี่ แต่ฉันเองก็เข้าใจการไหลของห้องสมุดด้วยการเพิ่มความช่วยเหลือด้านภาพ ไม่มีอะไรพิเศษอย่างแท้จริงเกี่ยวกับห้องสมุดนี้มันเป็นเพียงพื้นฐาน แต่มีชิ้นส่วนที่เคลื่อนไหวมากมายเมื่อคุณถอยกลับ
Rabbitservice - เริ่มวงจรชีวิต

ผู้บริโภค - เริ่มวงจรชีวิต

ConsumerDataflow - การไหลของข้อมูล

houseofcat.io