RabbitMq & DataFlows
RabbitMQ .NET 도구의 RabbitMQ 라이브러리는 성능이 좋은 서비스를 신속하게 개발하거나 RabbitMQ.Client 와의 내구성있는 연결을 관리하는 데 도움이됩니다!
상태
업데이트 : 05/03/2024
테스트 서버 : Windows 11 Pro (v10.0.22631 [Build 22631])
RabbitMQ 서버 : v3.13.2
Erlang : v26.2.5
RabbitMQ 전원 데이터 흐름을 만드는 이유는 무엇입니까?
Dataflows 에는 일류 시민으로 구성 가능한 동시성, 직렬화, 모니터링, 압축 및 암호화가 있습니다. 이 패러다임은 개발자가 중요한 일에 집중할 수 있습니다.
RabbitMQ.Dataflows 준비된 몇 가지 기능은 다음과 같습니다.
워크 플로
- 파이프 라인 (v1)은 가벼운 워크 플로우 즈크 기능-단계적 집행자입니다.
- 여전히 실행 순서를 제어 할 수 있도록 모든 단계 프로세스를 사용하여 제공됩니다.
- 구성 가능한 병렬 처리 및 동시성 내장.
- 자동 OpenTeLemetry가 없습니다.
- 자동 예외 포획/비동기 오류 처리 (예외를 제외하면 파이프 라인을 죽음).
- DataFlows (v2)는보다 복잡하지만 완전한 워크 플로 클래스입니다.
- 여전히 실행 순서를 제어 할 수 있도록 모든 단계 프로세스를 사용하여 제공됩니다.
- 구성 가능한 병렬 처리 및 동시성 내장.
- 비동기 처리, 배치 처리, 소비자 복제 등!
- 비동기 오류 처리 (함수를 던질 수 있도록 기능 오류 처리를 단순화).
- 자동 게시 (다음 큐에) 기능이 내장되어 있습니다.
- 출판/소비자를위한 기본 분산 추적을 가진 OpenTelemetry.
내장
- RabbitMQ
IConnectionPool 및 IChannelPool (연결 내구성). - loghelpers 정적 싱글 톤을 통해
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 소비자 데이터 플로우로 시작합니다 .
앞으로 더 많은 시각적 보조 도구를 찾을 수 있습니다!
또한 tests/UnitTests 또는 tests/RabbitMQ.Console.Test 프로젝트 내에서 다양한 라이브러리 예제를 찾을 수 있습니다.
Main RabbitMQ 라이브러리
houseofcat.rabbitmq
RabbitMQ 연결 및 채널 관리에 중점을 둔 도서관.
이전에 CookedRabbit.core/TesserAct라고 불렀습니다.
데이터 플로우 라이브러리
houseofcat.dataflows
Rabbitmq.dataflows의 기본 마법 데이터 플로우를 제공하는 라이브러리.
- Custom TPL Block- 채널 기반
BufferBlock<TIn> 로 사용되는 ChannelBock - DataFlowEngine 및 ChannelBlockengine이 있습니다.
- 파이프 라인이 있습니다 (DataFlow 대안).
핵심 생산성 라이브러리
이 라이브러리는 메시지를위한 강력한 데이터 플로우를 구축하는 데 도움이됩니다.
HouseOfcat
.NET ISerializationProvider 모음이있는 라이브러리 또는 직접 만들기위한 인터페이스.
- MessagePack 및 System.text.json 및 newtonsoft.json을 지원합니다.
houseofcat.compression
.NET ICompressionProvider 모음이있는 라이브러리 또는 직접 만들기위한 인터페이스.
- lz4, gzip, brotli 및 deflate를 지원합니다.
- RecyclableMoryStream 변형을 지원합니다.
houseofcat.hashing
해싱 구현에 중점을 둔 라이브러리.
houseofcat.encryption
암호화 계약 및 기본 AesGCM / AESGCM / AesCBC .NET IEncryptionProvider 및 자신의 인터페이스를 제공하는 라이브러리.
- cryptostream을 통해 AESCBC를 지원합니다 (암호화 된 파일/MemoryStreams에 적합).
- .NET AESGCM 128, 192, 256 (비 스트리밍)을 지원합니다.
- Bouncycastle AESGCM 128/192/256 지원.
- RecyclableMoryStream 변형을 지원합니다.
houseofcat.utilities
코딩 경험을 단순화하는 범용 재사용 가능한 기능 및 확장에 중점을 둔 라이브러리.
비 임계 라이브러리 통합
houseofcat.data
데이터 조작 및 변환을위한 도우미 클래스를 제공하는 라이브러리.
또한 데이터베이스 추상화, 간단한 Dapper 통합 및 SQLKATA 통합 SQL 쿼리 생성을 제공합니다.
데이터베이스 연결 공장 지원
- System.data.sqlclient
- Microsoft.data.sqlclient
- mysql.data.mysqlclient
- NPGSQ
- mysql.data
- 신탁
- sqlite
시각 보조 도구
아래 스크린 샷이있는 높은 수준의 엑스 칼리드 로프 파일을 포함 시켰습니다. 시간이 지남에 따라 계속 향상 될 것이므로 더 나은 품질과 최신 정보를 위해 파일을 열어야합니다. 목표는 여기에 모든 것을 갖는 것이 아니라 시각 원조를 추가하여 라이브러리의 흐름을 이해합니다. 이 라이브러리에는 진정으로 특별한 것이 없습니다. 단지 기본 사항이지만 물러서면 움직이는 부분이 많이 있습니다.
토끼 서비스 - 수명주기 시작

소비자 - 수명주기 시작

ConsumerDataFlow- 데이터 흐름

houseofcat.io