Skip to content

Outbox Options

c#
var configuration = 
    new ConfigurationBuilder()
        .AddJsonFile("appsettings.json").Build();

services.AddServiceBus(builder => 
{
    builder.Options.Outbox = new OutboxOptions
    {
        WorkQueueUri = "queue://configuration/inbox-work",
        ErrorQueueUri = "queue://configuration/inbox-error",
        ThreadCount = 25,
        DurationToSleepWhenIdle = new List<TimeSpan>
        {
            TimeSpan.FromMilliseconds(250),
            TimeSpan.FromSeconds(10),
            TimeSpan.FromSeconds(30)
        },
        DurationToIgnoreOnFailure = new List<TimeSpan>
        {
            TimeSpan.FromSeconds(10),
            TimeSpan.FromSeconds(30)
        },
        MaximumFailureCount = 2
    };
    
    // or bind from configuration
    configuration
        .GetSection(ServiceBusOptions.SectionName)
        .Bind(builder.Options);
})

The default JSON settings structure is as follows:

json
{
  "Shuttle": {
    "ServiceBus": {
      "Outbox": {
        "WorkQueueUri": "queue://configuration/outbox-work",
        "ErrorQueueUri": "queue://configuration/outbox-error",
        "ThreadCount": 25,
        "DurationToSleepWhenIdle": [
          "00:00:00.250",
          "00:00:10",
          "00:00:30"
        ],
        "DurationToIgnoreOnFailure": [
          "00:30:00",
          "01:00:00"
        ],
        "MaximumFailureCount": 25
      }
    }
  }
}

Options

OptionsDefaultDescription
ThreadCount1The number of worker threads that will service the work queue.
DurationToSleepWhenIdle250ms\*4,500ms\*2,1s,5sA list of TimeSpan instances. Each successive idle processing run will move to the next en`try in the list; resets as soon as a message is processed.
DurationToIgnoreOnFailure30s,2m,5mA list of TimeSpan instances. Each failure will move to the next entry.
MaximumFailureCount5The maximum number of failures that are retried before the message is moved to the error queue if there is one and the queue is not a stream; else the message is released.