#pragma warning disable PS0018 // A task-returning method should have a CancellationToken parameter unless it has a parameter implementing ICancellableContext
    public Task Configure(string endpointName, EndpointConfiguration configuration, RunSettings settings, PublisherMetadata publisherMetadata)
#pragma warning restore PS0018 // A task-returning method should have a CancellationToken parameter unless it has a parameter implementing ICancellableContext
    {
        TransportDefinition.UseConnectionCache = false;
        TransportDefinition.IgnoreIncomingTimeToBeReceivedHeaders = true;
        var timeoutStorage = new SqlServerDelayedMessageStore(GetStorageConnectionString());

        TransportDefinition.DelayedDelivery = new DelayedDeliverySettings(timeoutStorage);

        var routingConfig = configuration.UseTransport(TransportDefinition);

        foreach (var publisher in publisherMetadata.Publishers)
        {
            foreach (var eventType in publisher.Events)
            {
                routingConfig.RegisterPublisher(eventType, publisher.PublisherName);
            }
        }

        return(Task.FromResult(0));
    }
    DelayedDelivery(EndpointConfiguration endpointConfiguration)
    {
        #region delayed-delivery

        var messageStore = new SqlServerDelayedMessageStore(
            connectionString: "database=(local); initial catalog=my_catalog; integrated security=true",
            schema: "my_schema",               //optional, defaults to dbo
            tableName: "my_delayed_messages"); //optional, defaults to endpoint name with '.delayed' suffix

        var transport = new MsmqTransport
        {
            DelayedDelivery = new DelayedDeliverySettings(messageStore)
            {
                NumberOfRetries = 7,
                MaximumRecoveryFailuresPerSecond    = 2,
                TimeToTriggerStoreCircuitBreaker    = TimeSpan.FromSeconds(20),
                TimeToTriggerDispatchCircuitBreaker = TimeSpan.FromSeconds(15),
                TimeToTriggerFetchCircuitBreaker    = TimeSpan.FromSeconds(45)
            }
        };
        endpointConfiguration.UseTransport(transport);

        #endregion
    }