Skip to content

v5.0.0

Latest

Choose a tag to compare

@NinjaRocks NinjaRocks released this 15 Mar 01:14
0a4e731

Release Notes - v5.0.0

New Architecture

Aggregate → Interceptor → Middleware → Dispatcher → Queue ← Listener → Resolver → Handler

New Features

1. ISubscribes

Aggregates can handle their own events:

public class OrderAggregate : Aggregate, ISubscribes<OrderPlaced>
{
    public Task HandleAsync(OrderPlaced @event) => ...;
    public void PlaceOrder(decimal amount) => Raise(new OrderPlaced());
}

2. AggregateFactory

Multiple methods to create proxied aggregates:

// Default constructor
var order = await factory.CreateAsync<OrderAggregate>();

// With constructor arguments
var order = await factory.CreateAsync<OrderAggregate>(logger);

// From service provider (auto-resolves deps)
var order = await factory.CreateFromServiceProviderAsync<OrderAggregate>();

// Wrap existing instance
var order = await factory.CreateFromInstanceAsync(existingOrder);

3. Event Middleware (IEventMiddleware)

Pipeline hooks: OnDispatchingAsync, OnDispatchedAsync, OnHandlingAsync, OnHandledAsync

4. Event Queue (IEventQueue)

In-flight non-persistent queue with subscription support

5. Event Listener (IEventListener)

Processes queued events asynchronously