Sagas
To understand sagas and how to create one, refer to the Saga section.
Adding Sagas
Sagas are added inside the AddMassTransit
configuration using any of the following methods.
AddSaga<MySaga>();
Adds a saga.
AddSaga<MySaga, MySagaDefinition>();
Adds a saga with a matching saga definition.
AddSaga<MySaga, MySagaDefinition>(cfg =>{ cfg.ConcurrentMessageLimit = 8;});
Adds a saga with a matching saga definition and configures the saga pipeline.
AddSaga(typeof(MySaga));
Adds a saga by type.
AddSaga(typeof(MySaga), typeof(MySagaDefinition));
Adds a saga with a matching saga definition by type.
AddSagas(params Type[] types);
Adds the specified sagas and saga definitions. When saga definitions are included they will be added with the matching saga type.
AddSagas(params Assembly[] assemblies);
Adds all sagas and saga definitions in the specified an assembly or assemblies.
AddSagas(Func<Type, bool> filter, params Assembly[] assemblies);
Adds the sagas and any matching saga definitions in the specified an assembly or assemblies that pass the filter. The filter is only called for saga types.
Configuring Sagas
Sagas are automatically configured when ConfigureEndpoints
is called, which is highly recommended. The endpoint configuration can be mostly customized using either a saga definition or by specifying the endpoint configuration inline.
To manually configure a saga on a receive endpoint, use one of the following methods.
cfg.ReceiveEndpoint("manually-configured", e =>{ // configure endpoint-specific settings first e.SomeEndpointSetting = someValue; // configure any required middleware components next e.UseMessageRetry(r => r.Interval(5, 1000)); // configure the saga last e.ConfigureSaga<MySaga>(context);});// configure any remaining consumers, sagas, etc.cfg.ConfigureEndpoints(context);
Configuration Methods
ConfigureSaga<T>(context);
Configures the saga on the receive endpoint.
ConfigureSaga<T>(context, saga => { // configure saga-specific middleware});
Configures the saga on the receive endpoint and applies the additional saga configuration to the saga pipeline.
ConfigureSagas(context);
Configures all sagas that haven't been configured on the receive endpoint.