in src/DurableTask.ServiceBus/ServiceBusOrchestrationService.cs [172:237]
public ServiceBusOrchestrationService(
ServiceBusConnectionSettings connectionSettings,
string hubName,
IOrchestrationServiceInstanceStore instanceStore,
IOrchestrationServiceBlobStore blobStore,
ServiceBusOrchestrationServiceSettings settings)
{
this.connectionSettings = connectionSettings;
this.hubName = hubName;
this.ServiceStats = new ServiceBusOrchestrationServiceStats();
this.workerEntityName = string.Format(ServiceBusConstants.WorkerEndpointFormat, this.hubName);
this.orchestratorEntityName = string.Format(ServiceBusConstants.OrchestratorEndpointFormat, this.hubName);
this.trackingEntityName = string.Format(ServiceBusConstants.TrackingEndpointFormat, this.hubName);
if (!string.IsNullOrEmpty(connectionSettings.ConnectionString))
{
var sbConnectionStringBuilder = new ServiceBusConnectionStringBuilder(connectionSettings.ConnectionString);
#if NETSTANDARD2_0
this.serviceBusConnection = new ServiceBusConnection(sbConnectionStringBuilder);
#else
this.serviceBusConnection = new ServiceBusConnection(sbConnectionStringBuilder)
{
TokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider(sbConnectionStringBuilder.SasKeyName,
sbConnectionStringBuilder.SasKey, ServiceBusUtils.TokenTimeToLive),
};
#endif
}
#if NETSTANDARD2_0
else if (connectionSettings.Endpoint != null && connectionSettings.TokenCredential != null)
{
this.serviceBusConnection = new ServiceBusConnection(connectionSettings.Endpoint.Host, connectionSettings.TransportType, connectionSettings.TokenCredential);
}
#endif
else
{
throw new ArgumentException("Invalid Service Bus connection settings.", nameof(connectionSettings));
}
this.Settings = settings ?? new ServiceBusOrchestrationServiceSettings();
this.orchestratorBatchMessageSender = new MessageSender(this.serviceBusConnection, this.orchestratorEntityName);
this.BlobStore = blobStore;
if (instanceStore != null)
{
this.InstanceStore = instanceStore;
this.trackingDispatcher = new WorkItemDispatcher<TrackingWorkItem>(
"TrackingDispatcher",
item => item == null ? string.Empty : item.InstanceId,
FetchTrackingWorkItemAsync,
ProcessTrackingWorkItemAsync)
{
GetDelayInSecondsAfterOnFetchException = GetDelayInSecondsAfterOnFetchException,
GetDelayInSecondsAfterOnProcessException = GetDelayInSecondsAfterOnProcessException,
DispatcherCount = this.Settings.TrackingDispatcherSettings.DispatcherCount,
MaxConcurrentWorkItems = this.Settings.TrackingDispatcherSettings.MaxConcurrentTrackingSessions
};
if (this.Settings.JumpStartSettings.JumpStartEnabled)
{
this.jumpStartManager = new JumpStartManager(this, this.Settings.JumpStartSettings.Interval, this.Settings.JumpStartSettings.IgnoreWindow);
}
}
}