-
Notifications
You must be signed in to change notification settings - Fork 17
Open
Description
π Introduction
This issue tracks the work to modernize the Orleans.Providers.RabbitMQ library, bringing it up to date with:
- The latest Orleans streaming provider design patterns (v8+)
- The RabbitMQ .NET Client v7.x .NET/C# RabbitMQ Client Library
The goal is to make the provider reliable, extensible, and production-ready β aligning with Orleans' dependency injection and lifecycle models, improving throughput and resiliency, and embracing modern RabbitMQ features.
Given the age and structure of the current library, we will rebuild the provider from the ground up rather than modify the existing codebase.
π Community feedback is welcome and encouraged, if you have ideas, use cases, or suggestions, please share them in this issue!
β Goals / Features for the New Version
β¬οΈ Upgrade to RabbitMQ.Client v7
- Adopt new APIs and handle breaking changes
- Improve connection lifecycle and error handling
π§± Align with Orleans v8+ Streaming Provider Architecture
- Rename library to
Orleans.Streaming.RabbitMQ - Support proper lifecycle management via
ILifecycleParticipant<ISiloLifecycle>and/or DI disposal patterns.
π§΅ Improve Concurrency & Reliability
- Ensure thread-safe publishing and consuming
π Metrics & Observability
- Use high-performance structured logging (e.g., Microsoft.Extensions.Logging)
- Integrate with Orleans telemetry (OpenTelemetry-friendly)
- Expose key metrics: consumed messages, published messages, etc.
π§ͺ Testing (Unit + Integration)
- Provide mocked tests for core components
- Use Docker/Testcontainers for full RabbitMQ integration testing
- Cover edge cases: message loss, reconnects, pub-sub fanout
β©οΈ Backpressure & Retry Support
- Respect Orleans backpressure and flow control expectations
- Optional Provide configurable retry strategies
- Optional support for DLQ (dead letter queue) on failure
π€ Producer Enhancements (optional)
- Handle publisher confirms
- Support message properties (headers, content type, etc.)
π Explore RabbitMQ Stream Plugin (optional)
- Support for rewindable streams and high-throughput scenarios
- Consider using this as an alternative provider (e.g.,
Orleans.Streaming.RabbitMQ.Streams)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels