DurableTaskResourceExtensions Methods
ClassMethods7 members
Extension methods for adding and configuring Durable Task resources within a distributed application.
AddDurableTaskScheduler(IDistributedApplicationBuilder, string)Section titled AddDurableTaskScheduler(IDistributedApplicationBuilder, string)extensionIResourceBuilder<DurableTaskSchedulerResource> Adds a Durable Task scheduler resource to the distributed application.
public static class DurableTaskResourceExtensions{ public static IResourceBuilder<DurableTaskSchedulerResource> AddDurableTaskScheduler( this IDistributedApplicationBuilder builder, string name) { // ... }}Parameters
builderIDistributedApplicationBuilderThe distributed application builder.namestringThe logical name of the scheduler resource.Returns
IResourceBuilder<DurableTaskSchedulerResource>An ApplicationModel.IResourceBuilder`1 for the scheduler resource.Examples
Add a Durable Task scheduler resource:
var builder = DistributedApplication.CreateBuilder(args);var scheduler = builder.AddDurableTaskScheduler("scheduler");AddTaskHub(IResourceBuilder<DurableTaskSchedulerResource>, string)Section titled AddTaskHub(IResourceBuilder<DurableTaskSchedulerResource>, string)extensionIResourceBuilder<DurableTaskHubResource> Adds a Durable Task hub resource associated with the specified scheduler.
public static class DurableTaskResourceExtensions{ public static IResourceBuilder<DurableTaskHubResource> AddTaskHub( this IResourceBuilder<DurableTaskSchedulerResource> builder, string name) { // ... }}Parameters
builderIResourceBuilder<DurableTaskSchedulerResource>The scheduler resource builder.namestringThe logical name of the task hub resource.Returns
IResourceBuilder<DurableTaskHubResource>An ApplicationModel.IResourceBuilder`1 for the task hub resource.Examples
Add a task hub under a scheduler:
var builder = DistributedApplication.CreateBuilder(args);var scheduler = builder.AddDurableTaskScheduler("scheduler").RunAsEmulator();
var hub = scheduler.AddTaskHub("hub") .WithTaskHubName("MyTaskHub");RunAsEmulator(IResourceBuilder<DurableTaskSchedulerResource>, Action<IResourceBuilder<DurableTaskSchedulerEmulatorResource>>)Section titled RunAsEmulator(IResourceBuilder<DurableTaskSchedulerResource>, Action<IResourceBuilder<DurableTaskSchedulerEmulatorResource>>)extensionIResourceBuilder<DurableTaskSchedulerResource> Configures the Durable Task scheduler to run using the local emulator (only in non-publish modes).
public static class DurableTaskResourceExtensions{ public static IResourceBuilder<DurableTaskSchedulerResource> RunAsEmulator( this IResourceBuilder<DurableTaskSchedulerResource> builder, Action<IResourceBuilder<DurableTaskSchedulerEmulatorResource>>? configureContainer = null) { // ... }}Parameters
builderIResourceBuilder<DurableTaskSchedulerResource>The resource builder for the scheduler.configureContainerAction<IResourceBuilder<DurableTaskSchedulerEmulatorResource>>optionalCallback that exposes underlying container used for emulation to allow for customization.Returns
IResourceBuilder<DurableTaskSchedulerResource>The same ApplicationModel.IResourceBuilder`1 instance for chaining.Examples
Run the scheduler locally using the emulator:
var builder = DistributedApplication.CreateBuilder(args);var scheduler = builder.AddDurableTaskScheduler("scheduler") .RunAsEmulator();RunAsExisting(IResourceBuilder<DurableTaskSchedulerResource>, string)Section titled RunAsExisting(IResourceBuilder<DurableTaskSchedulerResource>, string)extensionIResourceBuilder<DurableTaskSchedulerResource> Configures the Durable Task scheduler to use an existing scheduler instance referenced by the provided connection string. No new scheduler resource is provisioned.
public static class DurableTaskResourceExtensions{ public static IResourceBuilder<DurableTaskSchedulerResource> RunAsExisting( this IResourceBuilder<DurableTaskSchedulerResource> builder, string connectionString) { // ... }}Parameters
builderIResourceBuilder<DurableTaskSchedulerResource>The scheduler resource builder.connectionStringstringThe connection string referencing the existing Durable Task scheduler instance.Returns
IResourceBuilder<DurableTaskSchedulerResource>The same ApplicationModel.IResourceBuilder`1 instance for fluent chaining.Remarks
The existing resource annotation is only applied when the execution context is not in publish mode.
Examples
Use an existing scheduler instead of provisioning a new one:
var builder = DistributedApplication.CreateBuilder(args);var scheduler = builder.AddDurableTaskScheduler("scheduler") .RunAsExisting("Endpoint=https://example;...;");RunAsExisting(IResourceBuilder<DurableTaskSchedulerResource>, IResourceBuilder<ParameterResource>)Section titled RunAsExisting(IResourceBuilder<DurableTaskSchedulerResource>, IResourceBuilder<ParameterResource>)extensionIResourceBuilder<DurableTaskSchedulerResource> Configures the Durable Task scheduler to use an existing scheduler instance referenced by the provided connection string. No new scheduler resource is provisioned.
public static class DurableTaskResourceExtensions{ public static IResourceBuilder<DurableTaskSchedulerResource> RunAsExisting( this IResourceBuilder<DurableTaskSchedulerResource> builder, IResourceBuilder<ParameterResource> connectionString) { // ... }}Parameters
builderIResourceBuilder<DurableTaskSchedulerResource>The scheduler resource builder.connectionStringIResourceBuilder<ParameterResource>The connection string parameter referencing the existing Durable Task scheduler instance.Returns
IResourceBuilder<DurableTaskSchedulerResource>The same ApplicationModel.IResourceBuilder`1 instance for fluent chaining.Remarks
The existing resource annotation is only applied when the execution context is not in publish mode.
Examples
Use an existing scheduler where the connection string is supplied via a parameter:
var builder = DistributedApplication.CreateBuilder(args);var schedulerConnectionString = builder.AddParameter("schedulerConnectionString");
var scheduler = builder.AddDurableTaskScheduler("scheduler") .RunAsExisting(schedulerConnectionString);WithTaskHubName(IResourceBuilder<DurableTaskHubResource>, string)Section titled WithTaskHubName(IResourceBuilder<DurableTaskHubResource>, string)extensionIResourceBuilder<DurableTaskHubResource> Sets the name of the Durable Task hub.
public static class DurableTaskResourceExtensions{ public static IResourceBuilder<DurableTaskHubResource> WithTaskHubName( this IResourceBuilder<DurableTaskHubResource> builder, string taskHubName) { // ... }}Parameters
builderIResourceBuilder<DurableTaskHubResource>The task hub resource builder.taskHubNamestringThe name of the Task Hub.Returns
IResourceBuilder<DurableTaskHubResource>The same ApplicationModel.IResourceBuilder`1 instance for fluent chaining.Examples
Set the task hub name:
var builder = DistributedApplication.CreateBuilder(args);var scheduler = builder.AddDurableTaskScheduler("scheduler").RunAsEmulator();var hub = scheduler.AddTaskHub("hub").WithTaskHubName("MyTaskHub");WithTaskHubName(IResourceBuilder<DurableTaskHubResource>, IResourceBuilder<ParameterResource>)Section titled WithTaskHubName(IResourceBuilder<DurableTaskHubResource>, IResourceBuilder<ParameterResource>)extensionIResourceBuilder<DurableTaskHubResource> Sets the name of the Durable Task hub using a parameter resource.
public static class DurableTaskResourceExtensions{ public static IResourceBuilder<DurableTaskHubResource> WithTaskHubName( this IResourceBuilder<DurableTaskHubResource> builder, IResourceBuilder<ParameterResource> taskHubName) { // ... }}Parameters
builderIResourceBuilder<DurableTaskHubResource>The task hub resource builder.taskHubNameIResourceBuilder<ParameterResource>A parameter resource that resolves to the Task Hub name.Returns
IResourceBuilder<DurableTaskHubResource>The same ApplicationModel.IResourceBuilder`1 instance for fluent chaining.Examples
Set the task hub name from a parameter:
var builder = DistributedApplication.CreateBuilder(args);var taskHubName = builder.AddParameter("taskHubName");
var scheduler = builder.AddDurableTaskScheduler("scheduler").RunAsEmulator();var hub = scheduler.AddTaskHub("hub").WithTaskHubName(taskHubName);