Transform SimpleMessageBus into the most delightfully simple yet powerful event processing framework for .NET, where complex scenarios feel effortless and getting started takes minutes, not hours.
- Magical Simplicity - Complex features should feel intuitive
- Zero-to-Hero Fast - From NuGet install to working system in under 5 minutes
- Production Ready - Built for scale, monitoring, and real-world scenarios
- Developer Joy - Rich tooling, great docs, and "it just works" experiences
- Clean, minimal API design (
IMessage,IMessageHandler,IMessagePublisher) - Platform flexibility (FileSystem, Azure, Amazon)
- WebJobs SDK integration for deployment anywhere
- Good separation of concerns
- Built-in retry and poison queue support
- Limited tooling - No way to inspect queues or manage poison messages
- Missing Amazon sample - No example showing AWS usage
- IndexedDb incomplete - Blazor scenarios not fully functional
- No documentation site - Docs folder exists but empty
- Minimal testing - Only basic MessageEnvelope tests
- No monitoring/telemetry - Production visibility missing
- Message context/pipeline data - Pass data between handlers
- Idempotency improvements - Better duplicate handling
- Advanced routing - Message filtering and conditional processing
- Schema evolution - Message versioning support
- Performance tooling - Load testing and benchmarking
- Rich CLI tools - Queue management and debugging
Goal: Make the system production-ready with essential tooling
-
Queue Inspector 🔍
- View message counts across all queue types
- Preview message content with syntax highlighting
- Filter by message type, date range, or content
- Export messages to JSON/CSV
-
Poison Queue Manager ☠️
- List poison messages with failure reasons
- Re-queue individual or batch messages
- Dead letter queue management
- Failure pattern analysis
-
Queue Purge & Maintenance 🧹
- Clear queues safely
- Queue health diagnostics
- Storage cleanup utilities
# Examples of the CLI magic we want:
smb queues list --provider azure
smb messages peek --queue myqueue --count 10
smb poison requeue --queue myqueue --message-id abc123
smb queues purge --queue testqueue --confirmSimpleMessageBus.Samples.Amazon- Mirror of AzureWebJobs sample- Complete with LocalStack support for local development
- Documentation showing AWS deployment patterns
- Core behavior tests for all providers
- Integration tests with TestContainers
- Load testing samples and benchmarks
Goal: Make SimpleMessageBus a joy to use with rich tooling and docs
- Stunning docs site built with Docusaurus or VitePress
- Interactive tutorials with embedded code samples
- Live playground for testing concepts
- Architecture deep-dives with diagrams
- Best practices guide for production scenarios
- API reference with examples
- Migration guides between versions
- Message Context - Pass data between handlers
public async Task Handle(OrderCreated message, IMessageContext context) { context.Set("UserId", message.UserId); context.Set("ProcessingStarted", DateTime.UtcNow); }
- Pipeline Metadata Preservation - Context survives poison queue scenarios
- Handler Ordering - Control execution sequence
- Conditional Handlers - Skip handlers based on context
- Complete IndexedDb implementation
- Blazor WebAssembly samples working
- Multi-threading scenarios for browser
- ServiceWorker integration patterns
Goal: Enterprise-ready features without losing simplicity
- Built-in telemetry with OpenTelemetry
- Health checks for all providers
- Metrics collection (throughput, latency, errors)
- Structured logging with correlation IDs
- Dashboard templates for monitoring tools
- Idempotency keys - Automatic duplicate detection
- Message versioning - Schema evolution support
- Batch processing - Handle multiple messages efficiently
- Message transformation - Built-in serialization options
- Time-based scheduling - Delayed message processing
- Retry policies - Exponential backoff, circuit breakers
- Custom error handlers - Provider-specific error handling
- Error enrichment - Capture additional context on failures
- Recovery workflows - Automated poison message recovery
Goal: Cover advanced scenarios while maintaining core simplicity
- Topic-based routing - Publish to specific handlers
- Message filtering - Handler-level message selection
- Fan-out patterns - One message, multiple processing paths
- Saga coordination - Long-running business processes
- Connection pooling - Optimize provider connections
- Batch operations - Bulk publish/process
- Partitioned queues - Scale beyond single queue limits
- Memory optimization - Reduced allocations
- HTTP webhooks - REST API message delivery
- Redis Streams - High-performance option
- In-memory provider - Testing and development
- Custom provider SDK - Easy third-party extensions
The CLI will be a masterpiece of developer experience:
# Rich, interactive queue browser
smb queues browse
┌─ Queue Status ─────────────────────────────────────────┐
│ Azure: myapp-events │ 🟢 12 pending │ 0 poison │
│ Azure: myapp-commands │ 🟡 156 pending │ 3 poison │
│ File: local-dev │ 🟢 0 pending │ 0 poison │
└────────────────────────────────────────────────────────┘
# Interactive poison message recovery
smb poison recover --interactive
? Select messages to requeue:
[x] OrderCreated (failed 3x) - Connection timeout
[ ] UserRegistered (failed 1x) - Validation error
[x] PaymentProcessed (failed 5x) - External API downpublic class MessageContext : IMessageContext
{
public void Set<T>(string key, T value);
public T Get<T>(string key);
public bool TryGet<T>(string key, out T value);
public IDictionary<string, object> GetAll();
}
// Usage in handlers
public async Task Handle(OrderCreated message, IMessageContext context)
{
// Set data for downstream handlers
context.Set("OrderTotal", message.TotalAmount);
context.Set("CustomerTier", await GetCustomerTier(message.CustomerId));
// This data survives even if message goes to poison queue
}// Built-in metrics
services.AddSimpleMessageBus()
.WithTelemetry(telemetry =>
{
telemetry.TrackMessageLatency = true;
telemetry.TrackHandlerPerformance = true;
telemetry.ExportTo.Console();
telemetry.ExportTo.OpenTelemetry();
});- CLI Tools - Immediate developer impact
- Amazon Sample - Complete the provider story
- Core Testing - Foundation reliability
- Time to Hello World: < 5 minutes from NuGet to working message
- Documentation Quality: Community feedback scores > 4.5/5
- CLI Adoption: > 80% of users try CLI tools within first month
- Issue Resolution: < 24 hour response time for GitHub issues
- GitHub Discussions for feature requests
- Discord/Slack for real-time community
- Regular dev streams showing features
- Blog posts highlighting unique scenarios
- Conference talks at .NET events
- Immediate Value - Phase 1 solves real pain points today
- Maintains Simplicity - Advanced features are opt-in, not required
- Developer-First - Every feature asks "does this spark joy?"
- Production Ready - Observability and tooling built-in, not bolted-on
- Community Driven - Plan evolves based on real user needs
The magic isn't just in the simple API - it's in how the entire ecosystem makes complex event processing feel effortless. From the first dotnet add package to managing thousands of messages in production, every interaction should feel delightful.
Next Steps: Review this plan, prioritize phases, and let's start building something amazing! 🎉