Workflow Runtime

Workflow Dispatcher

The Workflow Dispatcher is a service that is responsible for dispatching requests to execute workflows. It is represented by the IWorkflowDispatcher interface.

When a request to execute a workflow is dispatched, a consumer will pick up the request and execute the workflow asynchronously in the background. This allows the caller to continue without waiting for the workflow to complete.

Configuring the Workflow Dispatcher

Out of the box, Elsa provides two implementations of the IWorkflowDispatcher interface:

  • BackgroundWorkflowDispatcher: A simple implementation that queues the specified request for workflow execution on a non-durable background worker.
  • MassTransitWorkflowDispatcher: An implementation that uses MassTransit to dispatch the specified request to a queue for workflow execution.

Background Workflow Dispatcher

This is the default implementation that is used when no other implementation is registered.

MassTransit Workflow Dispatcher

This implementation uses MassTransit to dispatch the specified request to a queue for workflow execution.

To use this implementation, you must first configure MassTransit. See MassTransit Configuration for more information. Next, you need to tell the Workflow Runtime to use the MassTransit Workflow Dispatcher:

services.AddElsa(elsa => 
    elsa.UseWorkflowRuntime(runtime => 

The MassTransit implementation of the workflow dispatcher can be further configured using the MassTransitWorkflowDispatcherOptions class:

services.Configure<MassTransitWorkflowDispatcherOptions>(options =>
    // The number of concurrent messages to process.
    options.ConcurrentMessageLimit = 32;