# DurableTaskResourceExtensions Methods

- Package: [Aspire.Hosting.Azure.Functions](/reference/api/csharp/aspire.hosting.azure.functions.md)
- Type: [DurableTaskResourceExtensions](/reference/api/csharp/aspire.hosting.azure.functions/durabletaskresourceextensions.md)
- Kind: `Methods`
- Members: `7`

Extension methods for adding and configuring Durable Task resources within a distributed application.

## AddDurableTaskScheduler(IDistributedApplicationBuilder, string)

> **Experimental:** ASPIREDURABLETASK001 - [Learn more](/diagnostics/aspiredurabletask001/)

- Name: `AddDurableTaskScheduler(IDistributedApplicationBuilder, string)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<DurableTaskSchedulerResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/cbc352350f1a9bafbaff10d14a2c8de4ac186a48/src/Aspire.Hosting.Azure.Functions/DurableTask/DurableTaskResourceExtensions.cs#L34-L38)

Adds a Durable Task scheduler resource to the distributed application.

```csharp
public static class DurableTaskResourceExtensions
{
    public static IResourceBuilder<DurableTaskSchedulerResource> AddDurableTaskScheduler(
        this IDistributedApplicationBuilder builder,
        string name)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IDistributedApplicationBuilder`)
  The distributed application builder.
- `name` (`string`)
  The logical name of the scheduler resource.

## Returns

`IResourceBuilder<DurableTaskSchedulerResource>` -- An `ApplicationModel.IResourceBuilder`1` for the scheduler resource.

## Examples

Add a Durable Task scheduler resource:

```csharp
var builder = DistributedApplication.CreateBuilder(args);
var scheduler = builder.AddDurableTaskScheduler("scheduler");
```

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## AddTaskHub(IResourceBuilder<DurableTaskSchedulerResource>, string)

> **Experimental:** ASPIREDURABLETASK001 - [Learn more](/diagnostics/aspiredurabletask001/)

- Name: `AddTaskHub(IResourceBuilder<DurableTaskSchedulerResource>, string)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<DurableTaskHubResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/cbc352350f1a9bafbaff10d14a2c8de4ac186a48/src/Aspire.Hosting.Azure.Functions/DurableTask/DurableTaskResourceExtensions.cs#L219-L243)

Adds a Durable Task hub resource associated with the specified scheduler.

```csharp
public static class DurableTaskResourceExtensions
{
    public static IResourceBuilder<DurableTaskHubResource> AddTaskHub(
        this IResourceBuilder<DurableTaskSchedulerResource> builder,
        string name)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<DurableTaskSchedulerResource>`)
  The scheduler resource builder.
- `name` (`string`)
  The 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:

```csharp
var builder = DistributedApplication.CreateBuilder(args);
var scheduler = builder.AddDurableTaskScheduler("scheduler").RunAsEmulator();

var hub = scheduler.AddTaskHub("hub")
    .WithTaskHubName("MyTaskHub");
```

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## RunAsEmulator(IResourceBuilder<DurableTaskSchedulerResource>, Action<IResourceBuilder<DurableTaskSchedulerEmulatorResource>>)

> **Experimental:** ASPIREDURABLETASK001 - [Learn more](/diagnostics/aspiredurabletask001/)

- Name: `RunAsEmulator(IResourceBuilder<DurableTaskSchedulerResource>, Action<IResourceBuilder<DurableTaskSchedulerEmulatorResource>>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<DurableTaskSchedulerResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/cbc352350f1a9bafbaff10d14a2c8de4ac186a48/src/Aspire.Hosting.Azure.Functions/DurableTask/DurableTaskResourceExtensions.cs#L138-L195)

Configures the Durable Task scheduler to run using the local emulator (only in non-publish modes).

```csharp
public static class DurableTaskResourceExtensions
{
    public static IResourceBuilder<DurableTaskSchedulerResource> RunAsEmulator(
        this IResourceBuilder<DurableTaskSchedulerResource> builder,
        Action<IResourceBuilder<DurableTaskSchedulerEmulatorResource>>? configureContainer = null)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<DurableTaskSchedulerResource>`)
  The resource builder for the scheduler.
- `configureContainer` (`Action<IResourceBuilder<DurableTaskSchedulerEmulatorResource>>`) `optional`
  Callback 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:

```csharp
var builder = DistributedApplication.CreateBuilder(args);
var scheduler = builder.AddDurableTaskScheduler("scheduler")
    .RunAsEmulator();
```

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## RunAsExisting(IResourceBuilder<DurableTaskSchedulerResource>, string)

> **Experimental:** ASPIREDURABLETASK001 - [Learn more](/diagnostics/aspiredurabletask001/)

- Name: `RunAsExisting(IResourceBuilder<DurableTaskSchedulerResource>, string)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<DurableTaskSchedulerResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/cbc352350f1a9bafbaff10d14a2c8de4ac186a48/src/Aspire.Hosting.Azure.Functions/DurableTask/DurableTaskResourceExtensions.cs)

Configures the Durable Task scheduler to use an existing scheduler instance referenced by the provided connection string. No new scheduler resource is provisioned.

```csharp
public static class DurableTaskResourceExtensions
{
    public static IResourceBuilder<DurableTaskSchedulerResource> RunAsExisting(
        this IResourceBuilder<DurableTaskSchedulerResource> builder,
        string connectionString)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<DurableTaskSchedulerResource>`)
  The scheduler resource builder.
- `connectionString` (`string`)
  The 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:

```csharp
var builder = DistributedApplication.CreateBuilder(args);
var scheduler = builder.AddDurableTaskScheduler("scheduler")
    .RunAsExisting("Endpoint=https://example;...;");
```

## ATS metadata

### Ignored by ATS

- Excluded from automatic Polyglot export.

## RunAsExisting(IResourceBuilder<DurableTaskSchedulerResource>, IResourceBuilder<ParameterResource>)

> **Experimental:** ASPIREDURABLETASK001 - [Learn more](/diagnostics/aspiredurabletask001/)

- Name: `RunAsExisting(IResourceBuilder<DurableTaskSchedulerResource>, IResourceBuilder<ParameterResource>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<DurableTaskSchedulerResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/cbc352350f1a9bafbaff10d14a2c8de4ac186a48/src/Aspire.Hosting.Azure.Functions/DurableTask/DurableTaskResourceExtensions.cs)

Configures the Durable Task scheduler to use an existing scheduler instance referenced by the provided connection string. No new scheduler resource is provisioned.

```csharp
public static class DurableTaskResourceExtensions
{
    public static IResourceBuilder<DurableTaskSchedulerResource> RunAsExisting(
        this IResourceBuilder<DurableTaskSchedulerResource> builder,
        IResourceBuilder<ParameterResource> connectionString)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<DurableTaskSchedulerResource>`)
  The scheduler resource builder.
- `connectionString` (`IResourceBuilder<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:

```csharp
var builder = DistributedApplication.CreateBuilder(args);
var schedulerConnectionString = builder.AddParameter("schedulerConnectionString");

var scheduler = builder.AddDurableTaskScheduler("scheduler")
    .RunAsExisting(schedulerConnectionString);
```

## ATS metadata

### Ignored by ATS

- Excluded from automatic Polyglot export.

## WithTaskHubName(IResourceBuilder<DurableTaskHubResource>, string)

> **Experimental:** ASPIREDURABLETASK001 - [Learn more](/diagnostics/aspiredurabletask001/)

- Name: `WithTaskHubName(IResourceBuilder<DurableTaskHubResource>, string)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<DurableTaskHubResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/cbc352350f1a9bafbaff10d14a2c8de4ac186a48/src/Aspire.Hosting.Azure.Functions/DurableTask/DurableTaskResourceExtensions.cs)

Sets the name of the Durable Task hub.

```csharp
public static class DurableTaskResourceExtensions
{
    public static IResourceBuilder<DurableTaskHubResource> WithTaskHubName(
        this IResourceBuilder<DurableTaskHubResource> builder,
        string taskHubName)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<DurableTaskHubResource>`)
  The task hub resource builder.
- `taskHubName` (`string`)
  The name of the Task Hub.

## Returns

`IResourceBuilder<DurableTaskHubResource>` -- The same `ApplicationModel.IResourceBuilder`1` instance for fluent chaining.

## Examples

Set the task hub name:

```csharp
var builder = DistributedApplication.CreateBuilder(args);
var scheduler = builder.AddDurableTaskScheduler("scheduler").RunAsEmulator();
var hub = scheduler.AddTaskHub("hub").WithTaskHubName("MyTaskHub");
```

## ATS metadata

### Ignored by ATS

- Excluded from automatic Polyglot export.

## WithTaskHubName(IResourceBuilder<DurableTaskHubResource>, IResourceBuilder<ParameterResource>)

> **Experimental:** ASPIREDURABLETASK001 - [Learn more](/diagnostics/aspiredurabletask001/)

- Name: `WithTaskHubName(IResourceBuilder<DurableTaskHubResource>, IResourceBuilder<ParameterResource>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<DurableTaskHubResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/cbc352350f1a9bafbaff10d14a2c8de4ac186a48/src/Aspire.Hosting.Azure.Functions/DurableTask/DurableTaskResourceExtensions.cs)

Sets the name of the Durable Task hub using a parameter resource.

```csharp
public static class DurableTaskResourceExtensions
{
    public static IResourceBuilder<DurableTaskHubResource> WithTaskHubName(
        this IResourceBuilder<DurableTaskHubResource> builder,
        IResourceBuilder<ParameterResource> taskHubName)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<DurableTaskHubResource>`)
  The task hub resource builder.
- `taskHubName` (`IResourceBuilder<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:

```csharp
var builder = DistributedApplication.CreateBuilder(args);
var taskHubName = builder.AddParameter("taskHubName");

var scheduler = builder.AddDurableTaskScheduler("scheduler").RunAsEmulator();
var hub = scheduler.AddTaskHub("hub").WithTaskHubName(taskHubName);
```

## ATS metadata

### Ignored by ATS

- Excluded from automatic Polyglot export.
