Rabbitmq & Dataflows
Библиотека инструментов .NET Rabbitmq, которые помогут быстро разрабатывать хорошо эффективные услуги или просто помочь управлять долговечным подключением с RabbitMQ.Client !
Статус
Обновлено: 05/03/2024
Тестовый сервер: Windows 11 Pro (v10.0.22631 [Build 22631])
Rabbitmq Server: v3.13.2
Эрланг: v26.2.5
Зачем делать DataFlow с PabbitMQ?
Dataflows имеют настраиваемую параллелизм, сериализацию, мониторинг, сжатие и шифрование, все как граждане первого класса. Эта парадигма позволяет разработчикам просто сосредоточиться на важных вещах - выполнять работу!
Вот несколько функций, готовых с RabbitMQ.Dataflows .
Рабочие процессы
- Трубопроводы (v1) представляют собой функцию рабочего процесса легкого веса как исполнителя.
- Все шаги обрабатывают в предоставленном заказе, что позволяет вам все еще контролировать порядок выполнения.
- Настраиваемый параллелизм и встроенный параллелизм.
- Нет автоматической Opentelemetry.
- Нет автоматического улова исключения/обработка ошибок с асинхронной обработкой (исключения из брошенного убийства убивают трубопроводы).
- DataFlows (V2) - более сложный, но полный класс рабочего процесса.
- Все шаги обрабатывают в предоставленном заказе, что позволяет вам все еще контролировать порядок выполнения.
- Настраиваемый параллелизм и встроенный параллелизм.
- Асинхронная обработка, партийная обработка, клонирование потребителей и многое другое!
- Async Обработка ошибок (упростить обработку функциональной ошибки, позволяя бросить функции).
- Встроенная функция AutoPublish (в следующую очередь).
- Opentelemetry с нативным распределенным трассировкой для публикации/потребителя.
Встроенные
- Rabbitmq
IConnectionPool и IChannelPool (продолжительность подключения). - Поддерживает
ILogger<T> через Loghelpers Static Singleton. - Contracted
IWorkState упрощает функциональные общие доходности и интеграцию. - Имеет поддержку
ISerializationProvider для System.Text.Json и MessagePack .- Легко написать своих собственных поставщиков.
- Имеет встроенную поддержку
ICompressionProvider для GZIP, Delflate, 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 .
- Начало работы с Rabbitmq.dataflows Publisher.
- Начало работы с AutoPublisher Rabbitmq.dataflows .
- Начало работы с потребителем Rabbitmq.dataflows .
- Начало работы с Rabbitmq.dataflows ConsumerDataflow .
Больше предстоящих, и визуальные средства можно найти внизу!
Вы также можете найти различные примеры библиотеки внутри tests/UnitTests или проекта tests/RabbitMQ.Console.Test .
Главная библиотека Rabbitmq
Houseofcat.rabbitmq
Библиотека, которая фокусируется на подключении RabbitMQ и управлении каналами для создания издателей и потребителей, устойчивых к неисправности.
Ранее назывался Cokedrabbit.core/Tesseract.
Библиотека данных
Houseofcat.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.cryption
Библиотека, которая обеспечивает контракты шифрования и базовый AesGCM / AesCBC .NET IEncryptionProvider , а также интерфейс, чтобы сделать свой собственный.
- Поддерживает AESCBC через CryptoStream (хорошо для зашифрованных файлов/памяти).
- Поддерживает .NET AESGCM 128, 192, 256 (не потоки).
- Поддерживает BouncyCastle AESGCM 128/192/256.
- Поддерживает варианты recyclablememorystream.
Houseofcat.utilities
Библиотека, которая фокусируется на функциях и расширениях общего назначения, которые упрощают опыт кодирования.
Некритические интеграции библиотеки
Houseofcat.data
Библиотека, которая предоставляет вспомогательные классы для манипулирования и преобразования данных.
Также предоставляет абстракции базы данных, простую интеграцию DAPPER и генерацию SQL -запросов SQLKATA.
Поддержка подключения к базе данных
- System.data.sqlclient
- Microsoft.data.sqlclient
- Mysql.data.mysqlclient
- Npgsq
- Mysql.data
- Оракул
- SQLite
Визуальные пособия
Я включил файл экзалидро высокого уровня со скриншотами ниже. Обязательно откройте файл, хотя для лучшего качества и более актуальной информации, так как я буду продолжать улучшать его с течением времени. Цель не в том, чтобы иметь все здесь, но я сам понимаю поток библиотеки с добавлением визуальной помощи. В этой библиотеке нет ничего особенного, это просто основы, но есть много движущихся частей, когда вы отступите.
Кролика - начало жизненного цикла

Потребитель - Запуск жизненного цикла

ConsumerDataFlow - поток данных

Houseofcat.io