Azure における Durable Functions でのインスタンスの管理Manage instances in Durable Functions in Azure

Durable Functions オーケストレーション インスタンスは、開始、終了、照会したり、通知イベントを送信したりできます。Durable Functions orchestration instances can be started, terminated, queried, and sent notification events. インスタンス管理はすべて、オーケストレーション クライアント バインドを使用して行います。All instance management is done using the orchestration client binding. この記事では、各インスタンスの管理操作について詳しく説明します。This article goes into the details of each instance management operation.

インスタンスの開始Starting instances

DurableOrchestrationClient (.NET) の StartNewAsync メソッド、または DurableOrchestrationClient (JavaScript) の startNew は、オーケストレーター関数の新しいインスタンスを開始します。The StartNewAsync method on the DurableOrchestrationClient (.NET) or startNew on the DurableOrchestrationClient (JavaScript) starts a new instance of an orchestrator function. このクラスのインスタンスを取得するには、orchestrationClient バインドを使用します。Instances of this class can be acquired using the orchestrationClient binding. 内部的には、このメソッドは、メッセージをコントロール キューにエンキューし、これにより orchestrationTrigger トリガー バインドを使用する、指定された名前の関数がトリガーされます。Internally, this method enqueues a message into the control queue, which then triggers the start of a function with the specified name that uses the orchestrationTrigger trigger binding.

この非同期操作は、オーケストレーション プロセスが正常にスケジュールされたときに完了します。This async operation completes when the orchestration process is successfully scheduled. オーケストレーション プロセスは30 秒以内に開始する必要があります。The orchestration process should start within 30 seconds. これよりも長くかかると TimeoutException がスローされます。If it takes longer, a TimeoutException is thrown.

警告

JavaScript でローカルに開発する場合は、環境変数 WEBSITE_HOSTNAMElocalhost:<port> に設定する必要があります。たとえば、When developing locally in JavaScript, you will need to set the environment variable WEBSITE_HOSTNAME to localhost:<port>, ex. DurableOrchestrationClient のメソッドを使用するには、localhost:7071 に設定します。localhost:7071 to use methods on DurableOrchestrationClient. この要件の詳細については、GitHub の問題に関するページをご覧ください。For more information about this requirement, see the GitHub issue.

.NET.NET

StartNewAsync のパラメーターは次のとおりです。The parameters to StartNewAsync are as follows:

  • 名前: スケジュールするオーケストレーター関数の名前。Name: The name of the orchestrator function to schedule.
  • 入力:オーケストレーター関数に入力として渡す必要のある JSON でシリアル化できる任意のデータ。Input: Any JSON-serializable data that should be passed as the input to the orchestrator function.
  • InstanceId: (省略可能) インスタンスの一意の ID。InstanceId: (Optional) The unique ID of the instance. 指定しない場合は、ランダムなインスタンス ID が生成されます。If not specified, a random instance ID will be generated.

単純な C# の例を次に示します。Here is a simple C# example:

[FunctionName("HelloWorldManualStart")]
public static async Task Run(
    [ManualTrigger] string input,
    [OrchestrationClient] DurableOrchestrationClient starter,
    ILogger log)
{
    string instanceId = await starter.StartNewAsync("HelloWorld", input);
    log.LogInformation($"Started orchestration with ID = '{instanceId}'.");
}

JavaScript (Functions 2.x のみ)JavaScript (Functions 2.x only)

startNew へのパラメーターは次のとおりです。The parameters to startNew are as follows:

  • 名前: スケジュールするオーケストレーター関数の名前。Name: The name of the orchestrator function to schedule.
  • InstanceId: (省略可能) インスタンスの一意の ID。InstanceId: (Optional) The unique ID of the instance. 指定しない場合は、ランダムなインスタンス ID が生成されます。If not specified, a random instance ID will be generated.
  • 入力:(省略可能) オーケストレーター関数に入力として渡す必要のある JSON でシリアル化できる任意のデータ。Input: (Optional) Any JSON-serializable data that should be passed as the input to the orchestrator function.

単純な JavaScript の例を次に示します。Here is a simple JavaScript example:

const df = require("durable-functions");

module.exports = async function(context, input) {
    const client = df.getClient(context);

    const instanceId = await client.startNew("HelloWorld", undefined, input);
    context.log(`Started orchestration with ID = ${instanceId}.`);
};

注意

インスタンス ID にはランダムな識別子を使用します。Use a random identifier for the instance ID. これにより、複数の VM にわたってオーケストレーター関数をスケールするとき、負荷が均等に分散されるようになります。This will help ensure an equal load distribution when scaling orchestrator functions across multiple VMs. ランダムではないインスタンスの ID は、外部ソースから ID を取得するとき、またはシングルトン オーケストレーター パターンを実装するときに使用します。The proper time to use non-random instance IDs is when the ID must come from an external source or when implementing the singleton orchestrator pattern.

Core Tools を使用するUsing Core Tools

Azure Functions Core Toolsdurable start-new コマンドを使用してインスタンスを直接開始することもできます。It is also possible to start an instance directly via the Azure Functions Core Tools durable start-new command. 使用できるパラメーターは次のとおりです。It takes the following parameters:

  • function-name (必須): 開始する関数の名前function-name (required): Name of the function to start
  • input (省略可能): 関数への入力 (インラインまたは JSON ファイル経由のどちらか)。input (optional): Input to the function, either in-line or via a JSON file. ファイルの場合は、@path/to/file.json など、@ を使用してファイルへのパスにプレフィックスを付けます。For files, prefix the path to the file with @, such as @path/to/file.json.
  • id (省略可能): オーケストレーション インスタンスの ID。id (optional): ID of the orchestration instance. 指定しない場合は、ランダムな GUID が生成されます。If not provided, a random GUID is generated.
  • connection-string-setting (省略可能): 使用するストレージ接続文字列を含むアプリケーション設定の名前。connection-string-setting (optional): Name of the application setting containing the storage connection string to use. 既定では、AzureWebJobsStorage です。The default is AzureWebJobsStorage.
  • task-hub-name (省略可能): 使用する持続的なタスク ハブの名前。task-hub-name (optional): Name of the Durable task hub to use. 既定では、DurableFunctionsHub です。The default is DurableFunctionsHub. これは、durableTask:HubName を使用して host.json 内で設定することもできます。It can also be set in host.json via durableTask:HubName.

注意

Core Tools のコマンドでは、これらが関数アプリのルート ディレクトリから実行されると仮定されます。Core Tools commands assume they are being executed from the root directory of a function app. connection-string-settingtask-hub-nameが明示的に指定されている場合、コマンドは任意のディレクトリから実行できます。If connection-string-setting and task-hub-name are explicitly provided, the commands can be run from any directory. 関数アプリのホストを実行しなくてもこれらのコマンドを実行できますが、ホストが実行されていないと、一部の効果が得られないことがあります。While these commands can be executed without a Function app host running, some effects may not be observed unless the host is running. たとえば、start-new コマンドではターゲットのタスク ハブに開始メッセージがエンキューされますが、メッセージを処理できる関数アプリのホスト プロセスが実行されていない限り、オーケストレーションは実際に実行されません。For example, the start-new command will enqueue a start message into the target task hub, but the orchestration will not actually run unless there is a Function app host process running that can process the message.

次のコマンドは HelloWorld という名前の関数を開始し、'counter-data.json' ファイルの内容をその関数に渡します。The following command would start the function named HelloWorld and pass the contents of the file 'counter-data.json' to it:

func durable start-new --function-name HelloWorld --input @counter-data.json --task-hub-name TestTaskHub

インスタンスの照会Querying instances

DurableOrchestrationClient クラスの GetStatusAsync メソッド (.NET) または DurableOrchestrationClient クラスの getStatus メソッド (JavaScript) は、オーケストレーション インスタンスの状態のクエリを実行します。The GetStatusAsync method on the DurableOrchestrationClient class (.NET) or the getStatus method on the DurableOrchestrationClient class (JavaScript) queries the status of an orchestration instance.

これは、パラメーターとして instanceId (必須)、showHistory (省略可能)、showHistoryOutput (省略可能)、および showInput (省略可能、.NET のみ) を取ります。It takes an instanceId (required), showHistory (optional), showHistoryOutput (optional), and showInput (optional, .NET only) as parameters.

  • showHistory: true に設定されている場合は、応答に実行履歴が含まれます。showHistory: If set to true, the response will contain the execution history.
  • showHistoryOutput: true に設定されている場合は、実行履歴にアクティビティ出力が含まれます。showHistoryOutput: If set to true, the execution history will contain activity outputs.
  • showInput: false に設定されている場合は、応答に関数の入力は含まれません。showInput: If set to false, the response will not contain the input of the function. 既定値は true です。The default value is true. (.NET のみ)(.NET only)

このメソッドは次のプロパティを持つ JSON オブジェクトを返します。The method returns a JSON object with the following properties:

  • 名前: オーケストレーター関数の名前。Name: The name of the orchestrator function.
  • InstanceId: オーケストレーションのインスタンス ID (instanceId 入力と同じにする必要があります)。InstanceId: The instance ID of the orchestration (should be the same as the instanceId input).
  • CreatedTime: オーケストレーター関数が実行を開始した時刻。CreatedTime: The time at which the orchestrator function started running.
  • LastUpdatedTime: オーケストレーションが最後にチェックポイントされた時刻。LastUpdatedTime: The time at which the orchestration last checkpointed.
  • 入力:JSON 値としての関数の入力。Input: The input of the function as a JSON value. showInput が false の場合、このフィールドは設定されません。This field will not be populated if showInput is false.
  • CustomStatus: JSON 形式でのカスタム オーケストレーションの状態。CustomStatus: Custom orchestration status in JSON format.
  • 出力:JSON 値としての関数の出力 (関数が完了している場合)。Output: The output of the function as a JSON value (if the function has completed). オーケストレーター関数が失敗した場合、このプロパティには、エラーの詳細が含まれます。If the orchestrator function failed, this property will include the failure details. オーケストレーター関数が終了した場合、このプロパティには、提供されている終了の理由が含まれます (存在する場合)。If the orchestrator function was terminated, this property will include the provided reason for the termination (if any).
  • RuntimeStatus: 次のいずれかの値です。RuntimeStatus: One of the following values:
    • Pending: インスタンスはスケジュールされたが、まだ実行を開始していません。Pending: The instance has been scheduled but has not yet started running.
    • Running: インスタンスが実行を開始しました。Running: The instance has started running.
    • Completed: インスタンスが正常に完了しました。Completed: The instance has completed normally.
    • ContinuedAsNew: インスタンスが新しい履歴で自身を再開しました。ContinuedAsNew: The instance has restarted itself with a new history. これは遷移状態です。This is a transient state.
    • Failed: インスタンスがエラーで失敗しました。Failed: The instance failed with an error.
    • Terminated: インスタンスが突然停止されました。Terminated: The instance was stopped abruptly.
  • 履歴: オーケストレーションの実行履歴。History: The execution history of the orchestration. このフィールドにデータが設定されるのは、showHistorytrue に設定した場合のみです。This field is only populated if showHistory is set to true.

インスタンスが存在しないか、まだ開始されていない場合、このメソッドは null を返します。This method returns null if the instance either doesn't exist or has not yet started running.

C#C#

[FunctionName("GetStatus")]
public static async Task Run(
    [OrchestrationClient] DurableOrchestrationClient client,
    [ManualTrigger] string instanceId)
{
    var status = await client.GetStatusAsync(instanceId);
    // do something based on the current status.
}

JavaScript (Functions 2.x のみ)JavaScript (Functions 2.x only)

const df = require("durable-functions");

module.exports = async function(context, instanceId) {
    const client = df.getClient(context);

    const status = await client.getStatus(instanceId);
    // do something based on the current status.
}

Core Tools を使用するUsing Core Tools

Azure Functions Core Toolsdurable get-runtime-status コマンドを使用してオーケストレーション インスタンスの状態を直接取得することもできます。It is also possible to get the status of an orchestration instance directly via the Azure Functions Core Tools durable get-runtime-status command. 使用できるパラメーターは次のとおりです。It takes the following parameters:

  • id (必須): オーケストレーション インスタンスの IDid (required): ID of the orchestration instance
  • show-input (省略可能): true に設定されている場合は、応答に関数の入力が含まれます。show-input (optional): If set to true, the response will contain the input of the function. 既定値は false です。The default value is false.
  • show-output (省略可能): true に設定されている場合は、応答に関数の出力が含まれます。show-output (optional): If set to true, the response will contain the output of the function. 既定値は false です。The default value is false.
  • connection-string-setting (省略可能): 使用するストレージ接続文字列を含むアプリケーション設定の名前。connection-string-setting (optional): Name of the application setting containing the storage connection string to use. 既定では、AzureWebJobsStorage です。The default is AzureWebJobsStorage.
  • task-hub-name (省略可能): 使用する持続的なタスク ハブの名前。task-hub-name (optional): Name of the Durable task hub to use. 既定では、DurableFunctionsHub です。The default is DurableFunctionsHub. これは、durableTask:HubName を使用して host.json 内で設定することもできます。It can also be set in host.json via durableTask:HubName.

次のコマンドでは、0ab8c55a66644d68a3a8b220b12d209c というオーケストレーション インスタンス ID を持つインスタンスの状態 (入力と出力を含む) を取得します。The following command would retrieve the status (including input and output) of an instance with an orchestration instance ID of 0ab8c55a66644d68a3a8b220b12d209c. func コマンドが関数アプリのルート ディレクトリから実行されていることが想定されます。It assumes the func command is being run from the root directory of the Function app:

func durable get-runtime-status --id 0ab8c55a66644d68a3a8b220b12d209c --show-input true --show-output true

durable get-history コマンドを使用して、オーケストレーション インスタンスの履歴を取得できます。The durable get-history command can be used to retrieve the history of an orchestration instance. 使用できるパラメーターは次のとおりです。It takes the following parameters:

  • id (必須): オーケストレーション インスタンスの IDid (required): ID of the orchestration instance
  • connection-string-setting (省略可能): 使用するストレージ接続文字列を含むアプリケーション設定の名前。connection-string-setting (optional): Name of the application setting containing the storage connection string to use. 既定では、AzureWebJobsStorage です。The default is AzureWebJobsStorage.
  • task-hub-name (省略可能): 使用する持続的なタスク ハブの名前。task-hub-name (optional): Name of the Durable task hub to use. 既定では、DurableFunctionsHub です。The default is DurableFunctionsHub. durableTask:HubName を使用して host.json 内で設定することもできます。It can also be set in host.json via durableTask:HubName.
func durable get-history --id 0ab8c55a66644d68a3a8b220b12d209c

すべてのインスタンスのクエリを実行するQuerying all instances

GetStatusAsync (.NET) または getStatusAll (JavaScript) メソッドを使用して、すべてのオーケストレーション インスタンスの状態のクエリを実行できます。You can use the GetStatusAsync (.NET) or getStatusAll (JavaScript) method to query the statuses of all orchestration instances. .NET では、それを取り消したい場合、CancellationToken オブジェクトを渡すことができます。In .NET you can pass a CancellationToken object in case you want to cancel it. このメソッドは、GetStatusAsync メソッドと同じプロパティを含むオブジェクトをパラメーターと共に返します。The method returns objects with the same properties as the GetStatusAsync method with parameters.

C#C#

[FunctionName("GetAllStatus")]
public static async Task Run(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")]HttpRequestMessage req,
    [OrchestrationClient] DurableOrchestrationClient client,
    ILogger log)
{
    IList<DurableOrchestrationStatus> instances = await client.GetStatusAsync(); // You can pass CancellationToken as a parameter.
    foreach (var instance in instances)
    {
        log.LogInformation(JsonConvert.SerializeObject(instance));
    };
}

JavaScript (Functions 2.x のみ)JavaScript (Functions 2.x only)

const df = require("durable-functions");

module.exports = async function(context, req) {
    const client = df.getClient(context);

    const instances = await client.getStatusAll();
    instances.forEach((instance) => {
        context.log(JSON.stringify(instance));
    });
};

Core Tools を使用するUsing Core Tools

Azure Functions Core Toolsdurable get-instances コマンドを使用してインスタンスのクエリを直接実行することもできます。It is also possible to query instances directly via the Azure Functions Core Tools durable get-instances command. 使用できるパラメーターは次のとおりです。It takes the following parameters:

  • top (省略可能): このコマンドは、ページングをサポートします。top (optional): This command supports paging. このパラメーターは、要求ごとに取得されるインスタンス数に対応します。This parameter corresponds to the number of instances retrieved per request. 既定値は 10 です。The default is 10.
  • continuation-token (省略可能): 取得するインスタンスのページ/セクションを示すトークン。continuation-token (optional): A token to indicate which page/section of instances to retrieve. get-instances を実行するたびに、次の一連のインスタンスにトークンが返されます。Each get-instances execution returns a token to the next set of instances.
  • connection-string-setting (省略可能): 使用するストレージ接続文字列を含むアプリケーション設定の名前。connection-string-setting (optional): Name of the application setting containing the storage connection string to use. 既定では、AzureWebJobsStorage です。The default is AzureWebJobsStorage.
  • task-hub-name (省略可能): 使用する持続的なタスク ハブの名前。task-hub-name (optional): Name of the Durable task hub to use. 既定では、DurableFunctionsHub です。The default is DurableFunctionsHub. これは、durableTask:HubName を使用して host.json 内で設定することもできます。It can also be set in host.json via durableTask:HubName.
func durable get-instances

フィルターを使用したインスタンスのクエリQuerying instances with filters

GetStatusAsync (.NET) または getStatusBy (JavaScript) メソッドを使用して、一連の定義済みのフィルターに一致するオーケストレーション インスタンスの一覧を取得することもできます。You can also use the GetStatusAsync (.NET) or getStatusBy (JavaScript) method to get a list of orchestration instances that match a set of predefined filters. 使用可能なフィルター オプションには、オーケストレーションの作成時刻と、オーケストレーションのランタイム状態が含まれます。Possible filter options include the orchestration creation time and the orchestration runtime status.

C#C#

[FunctionName("QueryStatus")]
public static async Task Run(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")]HttpRequestMessage req,
    [OrchestrationClient] DurableOrchestrationClient client,
    ILogger log)
{
    IEnumerable<OrchestrationRuntimeStatus> runtimeStatus = new List<OrchestrationRuntimeStatus> {
        OrchestrationRuntimeStatus.Completed,
        OrchestrationRuntimeStatus.Running
    };
    IList<DurableOrchestrationStatus> instances = await starter.GetStatusAsync(
        new DateTime(2018, 3, 10, 10, 1, 0),
        new DateTime(2018, 3, 10, 10, 23, 59),
        runtimeStatus
    ); // You can pass CancellationToken as a parameter.
    foreach (var instance in instances)
    {
        log.LogInformation(JsonConvert.SerializeObject(instance));
    };
}

JavaScript (Functions 2.x のみ)JavaScript (Functions 2.x only)

const df = require("durable-functions");

module.exports = async function(context, req) {
    const client = df.getClient(context);

    const runtimeStatus = [
        df.OrchestrationRuntimeStatus.Completed,
        df.OrchestrationRuntimeStatus.Running,
    ];
    const instances = await client.getStatusBy(
        new Date(2018, 3, 10, 10, 1, 0),
        new Date(2018, 3, 10, 10, 23, 59),
        runtimeStatus
    );
    instances.forEach((instance) => {
        context.log(JSON.stringify(instance));
    });
};

Functions Core Tools を使用するUsing the Functions Core Tools

durable get-instances コマンドは、フィルターと共に使用することもできます。The durable get-instances command can also be used with filters. 前述の topcontinuation-tokenconnection-string-settingtask-hub-name パラメーターに加えて、3 つのフィルター パラメーター (created-aftercreated-beforeruntime-status) を使用できます。In addition to the aforementioned top, continuation-token, connection-string-setting, and task-hub-name parameters, three filter parameters (created-after, created-before, and runtime-status), can be used.

  • created-after (省略可能): この日付/時刻 (UTC) の後に作成されたインスタンスを取得します。created-after (optional): Retrieve the instances created after this date/time (UTC). ISO 8601 形式の日時が受け入れられます。ISO 8601 formatted datetimes accepted.
  • created-before (省略可能): この日付/時刻 (UTC) の前に作成されたインスタンスを取得します。created-before (optional): Retrieve the instances created before this date/time (UTC). ISO 8601 形式の日時が受け入れられます。ISO 8601 formatted datetimes accepted.
  • runtime-status (省略可能): 状態がこれら ('実行中'、'完了' など) に一致するインスタンスを取得します。runtime-status (optional): Retrieve the instances whose status match these ('running', 'completed', etc.). 複数の (スペースで区切られた) 状態を指定できます。Can provide multiple (space separated) statuses.
  • top (省略可能): 要求ごとに取得されるインスタンスの数。top (optional): Number of instances retrieved per request. 既定値は 10 です。The default is 10.
  • continuation-token (省略可能): 取得するインスタンスのページ/セクションを示すトークン。continuation-token (optional): A token to indicate which page/section of instances to retrieve. get-instances を実行するたびに、次の一連のインスタンスにトークンが返されます。Each get-instances execution returns a token to the next set of instances.
  • connection-string-setting (省略可能): 使用するストレージ接続文字列を含むアプリケーション設定の名前。connection-string-setting (optional): Name of the application setting containing the storage connection string to use. 既定では、AzureWebJobsStorage です。The default is AzureWebJobsStorage.
  • task-hub-name (省略可能): 使用する持続的なタスク ハブの名前。task-hub-name (optional): Name of the Durable task hub to use. 既定では、DurableFunctionsHub です。The default is DurableFunctionsHub. これは、durableTask:HubName を使用して host.json 内で設定することもできます。It can also be set in host.json via durableTask:HubName.

フィルター (created-aftercreated-beforeruntime-status のいずれか) が指定されていない場合、top インスタンスは、ランタイムの状態や作成時刻に関係なく取得されます。If no filters (created-after, created-before, or runtime-status) are provided, then top instances will be retrieved with no regard to runtime status or creation time.

func durable get-instances --created-after 2018-03-10T13:57:31Z --created-before  2018-03-10T23:59Z --top 15

インスタンスの終了Terminating instances

実行中のオーケストレーション インスタンスは、DurableOrchestrationClient クラスの TerminateAsync メソッド (.NET) または DurableOrchestrationClient クラスの terminate メソッド (JavaScript) を使用して終了できます。A running orchestration instance can be terminated using the TerminateAsync method of the DurableOrchestrationClient class (.NET), or the terminate method of the DurableOrchestrationClient class (JavaScript). 2 つのパラメーター instanceIdreason 文字列は、ログとインスタンス状態に書き込まれます。The two parameters are an instanceId and a reason string, which will be written to logs and to the instance status. 終了されたインスタンスは、次の await (.NET) または yield (JavaScript) ポイントに到達するとすぐに実行を停止するか、あるいは既に await (.NET) または yield (JavaScript) 上にある場合は直ちに終了します。A terminated instance will stop running as soon as it reaches the next await (.NET) or yield (JavaScript) point, or it will terminate immediately if it is already on an await (.NET) or yield (JavaScript).

C#C#

[FunctionName("TerminateInstance")]
public static Task Run(
    [OrchestrationClient] DurableOrchestrationClient client,
    [ManualTrigger] string instanceId)
{
    string reason = "It was time to be done.";
    return client.TerminateAsync(instanceId, reason);
}

JavaScript (Functions 2.x のみ)JavaScript (Functions 2.x only)

const df = require("durable-functions");

module.exports = async function(context, instanceId) {
    const client = df.getClient(context);

    const reason = "It was time to be done.";
    return client.terminate(instanceId, reason);
};

注意

インスタンスの終了は、現在、伝達されません。Instance termination does not currently propagate. アクティビティ関数およびサブオーケストレーションは、これらを呼び出したオーケストレーション インスタンスが終了しているかどうかに関係なく、完了するまで実行されます。Activity functions and sub-orchestrations will run to completion regardless of whether the orchestration instance that called them has been terminated.

Core Tools を使用するUsing Core Tools

Core Toolsdurable terminate コマンドを使用してオーケストレーション インスタンスを直接終了することもできます。It is also possible to terminate an orchestration instance directly via the Core Tools durable terminate command. 使用できるパラメーターは次のとおりです。It takes the following parameters:

  • id (必須): 終了するオーケストレーション インスタンスの IDid (required): ID of the orchestration instance to terminate
  • reason (省略可能): 終了の理由reason (optional): Reason for termination
  • connection-string-setting (省略可能): 使用するストレージ接続文字列を含むアプリケーション設定の名前。connection-string-setting (optional): Name of the application setting containing the storage connection string to use. 既定では、AzureWebJobsStorage です。The default is AzureWebJobsStorage.
  • task-hub-name (省略可能): 使用する持続的なタスク ハブの名前。task-hub-name (optional): Name of the Durable task hub to use. 既定では、DurableFunctionsHub です。The default is DurableFunctionsHub. これは、durableTask:HubName を使用して host.json 内で設定することもできます。It can also be set in host.json via durableTask:HubName.

次のコマンドでは、ID が 0ab8c55a66644d68a3a8b220b12d209c のオーケストレーション インスタンスを終了します。The following command would terminate an orchestration instance with an ID of 0ab8c55a66644d68a3a8b220b12d209c:

func durable terminate --id 0ab8c55a66644d68a3a8b220b12d209c --reason "It was time to be done."

インスタンスへのイベントの送信Sending events to instances

イベント通知は、DurableOrchestrationClient クラスの RaiseEventAsync メソッド (.NET) または DurableOrchestrationClient クラスの raiseEvent メソッド (JavaScript) を使用して、実行中のインスタンスに送信できます。Event notifications can be sent to running instances using the RaiseEventAsync method of the DurableOrchestrationClient class (.NET) or the raiseEvent method of the DurableOrchestrationClient class (JavaScript). これらのイベントを処理できるインスタンスは、WaitForExternalEvent (.NET) または waitForExternalEvent (JavaScript) への呼び出しを待っているインスタンスです。Instances that can handle these events are those that are awaiting a call to WaitForExternalEvent (.NET) or waitForExternalEvent (JavaScript).

RaiseEventAsync (.NET) および raiseEvent (JavaScript) へのパラメーターは次のとおりです。The parameters to RaiseEventAsync (.NET) and raiseEvent (JavaScript) are as follows:

  • InstanceId: インスタンスの一意の ID。InstanceId: The unique ID of the instance.
  • EventName: 送信するイベントの名前。EventName: The name of the event to send.
  • EventData: インスタンスに送信する JSON でシリアル化できるペイロード。EventData: A JSON-serializable payload to send to the instance.

C#C#

[FunctionName("RaiseEvent")]
public static Task Run(
    [OrchestrationClient] DurableOrchestrationClient client,
    [ManualTrigger] string instanceId)
{
    int[] eventData = new int[] { 1, 2, 3 };
    return client.RaiseEventAsync(instanceId, "MyEvent", eventData);
}

JavaScript (Functions 2.x のみ)JavaScript (Functions 2.x only)

const df = require("durable-functions");

module.exports = async function(context, instanceId) {
    const client = df.getClient(context);

    const eventData = [ 1, 2, 3 ];
    return client.raiseEvent(instanceId, "MyEvent", eventData);
};

警告

指定した "インスタンス ID" のオーケストレーション インスタンスが存在しない場合、または指定した "イベント名" でインスタンスが待機していない場合、イベント メッセージは破棄されます。If there is no orchestration instance with the specified instance ID or if the instance is not waiting on the specified event name, the event message is discarded. この動作の詳細については、GitHub の問題に関するトピックをご覧ください。For more information about this behavior, see the GitHub issue.

Core Tools を使用するUsing Core Tools

Core Toolsdurable raise-event コマンドを使用してオーケストレーション インスタンスにイベントを直接発生させることもできます。It is also possible to raise an event to an orchestration instance directly via the Core Tools durable raise-event command. 使用できるパラメーターは次のとおりです。It takes the following parameters:

  • id (必須): オーケストレーション インスタンスの IDid (required): ID of the orchestration instance
  • event-name (省略可能): 発生させるイベントの名前。event-name (optional): Name of the event to raise. 既定値は $"Event_{RandomGUID}" ですThe default is $"Event_{RandomGUID}"
  • event-data (省略可能): オーケストレーション インスタンスに送信するデータ。event-data (optional): Data to send to the orchestration instance. これは JSON ファイルへのパスにするか、コマンド ラインでデータを直接指定することができますThis can be the path to a JSON file or the data can be provided directly on the command line
  • connection-string-setting (省略可能): 使用するストレージ接続文字列を含むアプリケーション設定の名前。connection-string-setting (optional): Name of the application setting containing the storage connection string to use. 既定では、AzureWebJobsStorage です。The default is AzureWebJobsStorage.
  • task-hub-name (省略可能): 使用する持続的なタスク ハブの名前。task-hub-name (optional): Name of the Durable task hub to use. 既定では、DurableFunctionsHub です。The default is DurableFunctionsHub. これは、durableTask:HubName を使用して host.json 内で設定することもできます。It can also be set in host.json via durableTask:HubName.
func durable raise-event --id 0ab8c55a66644d68a3a8b220b12d209c --event-name MyEvent --event-data @eventdata.json
func durable raise-event --id 1234567 --event-name MyOtherEvent --event-data 3

オーケストレーションの完了の待機Wait for orchestration completion

DurableOrchestrationClient クラスは、オーケストレーション インスタンスからの実際の出力を同期的に取得するために使用できる .NET の WaitForCompletionOrCreateCheckStatusResponseAsync API を公開します。The DurableOrchestrationClient class exposes a WaitForCompletionOrCreateCheckStatusResponseAsync API in .NET that can be used to get synchronously the actual output from an orchestration instance. JavaScript では、DurableOrchestrationClient クラスが同じ目的のために waitForCompletionOrCreateCheckStatusResponse API を公開します。In JavaScript, the DurableOrchestrationClient class exposes a waitForCompletionOrCreateCheckStatusResponse API for the same purpose. これらのメソッドは timeout に 10 秒、および retryInterval に 1 秒の既定値を使用します (これらが設定されていない場合)。The methods use a default value of 10 seconds for timeout and 1 second for retryInterval when they are not set.

この API の使用方法を示す HTTP トリガー関数の例を次に示します。Here is an example HTTP-trigger function that demonstrates how to use this API:

// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the MIT License. See LICENSE in the project root for license information.

using System;
using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Extensions.Logging;

namespace VSSample
{
    public static class HttpSyncStart
    {
        private const string Timeout = "timeout";
        private const string RetryInterval = "retryInterval";

        [FunctionName("HttpSyncStart")]
        public static async Task<HttpResponseMessage> Run(
            [HttpTrigger(AuthorizationLevel.Function, methods: "post", Route = "orchestrators/{functionName}/wait")]
            HttpRequestMessage req,
            [OrchestrationClient] DurableOrchestrationClientBase starter,
            string functionName,
            ILogger log)
        {
            // Function input comes from the request content.
            dynamic eventData = await req.Content.ReadAsAsync<object>();
            string instanceId = await starter.StartNewAsync(functionName, eventData);

            log.LogInformation($"Started orchestration with ID = '{instanceId}'.");

            TimeSpan timeout = GetTimeSpan(req, Timeout) ?? TimeSpan.FromSeconds(30);
            TimeSpan retryInterval = GetTimeSpan(req, RetryInterval) ?? TimeSpan.FromSeconds(1);
            
            return await starter.WaitForCompletionOrCreateCheckStatusResponseAsync(
                req,
                instanceId,
                timeout,
                retryInterval);
        }

        private static TimeSpan? GetTimeSpan(HttpRequestMessage request, string queryParameterName)
        {
            string queryParameterStringValue = request.RequestUri.ParseQueryString()[queryParameterName];
            if (string.IsNullOrEmpty(queryParameterStringValue))
            {
                return null;
            }

            return TimeSpan.FromSeconds(double.Parse(queryParameterStringValue));
        }
    }
}
const df = require("durable-functions");

const timeout = "timeout";
const retryInterval = "retryInterval";

module.exports = async function (context, req) {
    const client = df.getClient(context);
    const instanceId = await client.startNew(req.params.functionName, undefined, req.body);

    context.log(`Started orchestration with ID = '${instanceId}'.`);

    const timeoutInMilliseconds = getTimeInSeconds(req, timeout) || 30000;
    const retryIntervalInMilliseconds = getTimeInSeconds(req, retryInterval) || 1000;

    return client.waitForCompletionOrCreateCheckStatusResponse(
        context.bindingData.req,
        instanceId,
        timeoutInMilliseconds,
        retryIntervalInMilliseconds);
};

function getTimeInSeconds (req, queryParameterName) {
    const queryValue = req.query[queryParameterName];
    return queryValue
        ? queryValue // expected to be in seconds
        * 1000 : undefined;
}

この関数は、次のように 2 秒のタイムアウトと 0.5 秒の再試行間隔を使用して呼び出すことができます。The function can be called with the following line using 2-seconds timeout and 0.5-second retry interval:

    http POST http://localhost:7071/orchestrators/E1_HelloSequence/wait?timeout=2&retryInterval=0.5

オーケストレーション インスタンスからの応答を取得するために必要な時間に応じて 2 つのケースがあります。Depending on the time required to get the response from the orchestration instance, there are two cases:

  • オーケストレーション インスタンスが、定義されたタイムアウト (このケースでは 2 秒) 内に完了すると、応答は、同期して提供される実際のオーケストレーション インスタンス出力です。The orchestration instances complete within the defined timeout (in this case 2 seconds), the response is the actual orchestration instance output delivered synchronously:

        HTTP/1.1 200 OK
        Content-Type: application/json; charset=utf-8
        Date: Thu, 14 Dec 2017 06:14:29 GMT
        Server: Microsoft-HTTPAPI/2.0
        Transfer-Encoding: chunked
    
        [
            "Hello Tokyo!",
            "Hello Seattle!",
            "Hello London!"
        ]
    
  • オーケストレーション インスタンスが、定義されたタイムアウト (このケースでは 2 秒) 内に完了できない場合、応答は「HTTP API URL の検出」で説明されている既定のものになります。The orchestration instances cannot complete within the defined timeout (in this case 2 seconds), the response is the default one described in HTTP API URL discovery:

        HTTP/1.1 202 Accepted
        Content-Type: application/json; charset=utf-8
        Date: Thu, 14 Dec 2017 06:13:51 GMT
        Location: http://localhost:7071/admin/extensions/DurableTaskExtension/instances/d3b72dddefce4e758d92f4d411567177?taskHub={taskHub}&connection={connection}&code={systemKey}
        Retry-After: 10
        Server: Microsoft-HTTPAPI/2.0
        Transfer-Encoding: chunked
    
        {
            "id": "d3b72dddefce4e758d92f4d411567177",
            "sendEventPostUri": "http://localhost:7071/admin/extensions/DurableTaskExtension/instances/d3b72dddefce4e758d92f4d411567177/raiseEvent/{eventName}?taskHub={taskHub}&connection={connection}&code={systemKey}",
            "statusQueryGetUri": "http://localhost:7071/admin/extensions/DurableTaskExtension/instances/d3b72dddefce4e758d92f4d411567177?taskHub={taskHub}&connection={connection}&code={systemKey}",
            "terminatePostUri": "http://localhost:7071/admin/extensions/DurableTaskExtension/instances/d3b72dddefce4e758d92f4d411567177/terminate?reason={text}&taskHub={taskHub}&connection={connection}&code={systemKey}",
            "rewindPostUri": "https://localhost:7071/admin/extensions/DurableTaskExtension/instances/d3b72dddefce4e758d92f4d411567177/rewind?reason={text}&taskHub={taskHub}&connection={connection}&code={systemKey}"
        }
    

注意

webhook URL の形式は、実行している Azure Functions ホストのバージョンによって異なる場合があります。The format of the webhook URLs may differ depending on which version of the Azure Functions host you are running. 前の例は、Azure Functions 2.x ホストに対するものです。The preceding example is for the Azure Functions 2.x host.

HTTP 管理 webhook URL の取得Retrieving HTTP Management Webhook URLs

外部システムは、HTTP API URL の検出に関するページで説明されている既定の応答の一部である webhook URL を介して、Durable Functions と通信できます。External systems can communicate with Durable Functions via the webhook URLs that are part of the default response described in HTTP API URL discovery. ただし、webhook URL には、DurableOrchestrationClient クラスの CreateHttpManagementPayload メソッド (.NET) または DurableOrchestrationClient クラスの createHttpManagementPayload メソッド (JavaScript) を経由して、オーケストレーション クライアントまたはアクティビティ関数でプログラムでアクセスすることもできます。However, the webhook URLs also can be accessed programmatically in the orchestration client or in an activity function via the CreateHttpManagementPayload method of the DurableOrchestrationClient class (.NET) or the createHttpManagementPayload method of the DurableOrchestrationClient class (JavaScript).

CreateHttpManagementPayloadcreateHttpManagementPayload には、次の 1 つのパラメーターがあります。CreateHttpManagementPayload and createHttpManagementPayload have one parameter:

  • instanceId: インスタンスの一意の ID。instanceId: The unique ID of the instance.

これらのメソッドは、HttpManagementPayload のインスタンス (.NET) またはオブジェクト (JavaScript) を次の文字列プロパティと共に返します。The methods return an instance of HttpManagementPayload (.NET) or an object (JavaScript) with the following string properties:

  • Id: オーケストレーションのインスタンス ID (InstanceId 入力と同じにする必要があります)。Id: The instance ID of the orchestration (should be the same as the InstanceId input).
  • StatusQueryGetUri: オーケストレーション インスタンスの状態の URL。StatusQueryGetUri: The status URL of the orchestration instance.
  • SendEventPostUri: オーケストレーション インスタンスの "イベント発生" URL。SendEventPostUri: The "raise event" URL of the orchestration instance.
  • TerminatePostUri: オーケストレーション インスタンスの "終了" URL。TerminatePostUri: The "terminate" URL of the orchestration instance.
  • RewindPostUri: オーケストレーション インスタンスの "rewind" URL。RewindPostUri: The "rewind" URL of the orchestration instance.

アクティビティ関数は、オーケストレーションへのイベントを監視したり、発生させたりするために、これらのオブジェクトのインスタンスを外部システムに送信できます。Activity functions can send an instance of these objects to external systems to monitor or raise events to an orchestration:

C#C#

[FunctionName("SendInstanceInfo")]
public static void SendInstanceInfo(
    [ActivityTrigger] DurableActivityContext ctx,
    [OrchestrationClient] DurableOrchestrationClient client,
    [DocumentDB(
        databaseName: "MonitorDB",
        collectionName: "HttpManagementPayloads",
        ConnectionStringSetting = "CosmosDBConnection")]out dynamic document)
{
    HttpManagementPayload payload = client.CreateHttpManagementPayload(ctx.InstanceId);

    // send the payload to Cosmos DB
    document = new { Payload = payload, id = ctx.InstanceId };
}

JavaScript (Functions 2.x のみ)JavaScript (Functions 2.x only)

const df = require("durable-functions");

modules.exports = async function(context, ctx) {
    const client = df.getClient(context);

    const payload = client.createHttpManagementPayload(ctx.instanceId);

    // send the payload to Cosmos DB
    context.bindings.document = JSON.stringify({
        id: ctx.instanceId,
        payload,
    });
};

インスタンスの巻き戻し (プレビュー)Rewinding instances (preview)

失敗したオーケストレーション インスタンスは、RewindAsync (.NET) または rewindAsync (JavaScript) API を使用して、以前の正常な状態に巻き戻すことができます。A failed orchestration instance can be rewound into a previously healthy state using the RewindAsync (.NET) or rewindAsync (JavaScript) API. これは、オーケストレーションを "実行中" 状態に戻し、オーケストレーション エラーの原因となったアクティビティやサブオーケストレーションの実行失敗を再実行することで機能します。It works by putting the orchestration back into the Running state and rerunning the activity and/or suborchestration execution failures that caused the orchestration failure.

注意

この API は、適切なエラー処理や再試行ポリシーの代わりとなるものではありません。This API is not intended to be a replacement for proper error handling and retry policies. 予期しない理由でオーケストレーション インスタンスが失敗する場合にのみ使用するものです。Rather, it is intended to be used only in cases where orchestration instances fail for unexpected reasons. エラー処理と再試行ポリシーについて詳しくは、エラー処理に関するトピックをご覧ください。For more details on error handling and retry policies, please see the Error handling topic.

"巻き戻し" のユース ケースの一例として、一連の人による承認があります。One example use case for rewind is a workflow involving a series of human approvals. 承認が必要であることをユーザーに通知し、リアルタイムの応答を待機する一連のアクティビティ関数があるとします。Suppose there are a series of activity functions that notify someone that their approval is needed and wait out the real-time response. すべての承認アクティビティが応答を受信するかタイムアウトになった後、アプリケーションの構成ミス (無効なデータベース接続文字列など) により別のアクティビティが失敗します。After all of the approval activities have received responses or timed out, another activity fails due to an application misconfiguration, such as an invalid database connection string. 結果として、ワークフローの深い部分でオーケストレーションが失敗します。The result is an orchestration failure deep into the workflow. RewindAsync (.NET) または rewindAsync (JavaScript) API を使用すると、アプリケーション管理者は構成エラーを修正し、失敗したオーケストレーションを失敗の直前の状態に巻き戻すことができます。With the RewindAsync (.NET) or rewindAsync (JavaScript) API, an application administrator can fix the configuration error and rewind the failed orchestration back to the state immediately before the failure. 人間の対話手順はいずれも再承認が不要で、オーケストレーションは正常に完了できるようになります。None of the human-interaction steps need to be reapproved and the orchestration can now complete successfully.

注意

"巻き戻し" 機能では、永続タイマーを使用したオーケストレーション インスタンスの巻き戻しはサポートされません。The rewind feature does not support rewinding orchestration instances that use durable timers.

C#C#

[FunctionName("RewindInstance")]
public static Task Run(
    [OrchestrationClient] DurableOrchestrationClient client,
    [ManualTrigger] string instanceId)
{
    string reason = "Orchestrator failed and needs to be revived.";
    return client.RewindAsync(instanceId, reason);
}

JavaScript (Functions 2.x のみ)JavaScript (Functions 2.x only)

const df = require("durable-functions");

module.exports = async function(context, instanceId) {
    const client = df.getClient(context);

    const reason = "Orchestrator failed and needs to be revived.";
    return client.rewind(instanceId, reason);
};

Core Tools を使用するUsing Core Tools

Core Toolsdurable rewind コマンドを使用してオーケストレーション インスタンスを直接巻き戻すこともできます。It is also possible to rewind an orchestration instance directly via the Core Tools durable rewind command. 使用できるパラメーターは次のとおりです。It takes the following parameters:

  • id (必須): オーケストレーション インスタンスの IDid (required): ID of the orchestration instance
  • reason (省略可能): オーケストレーション インスタンスを巻き戻す理由reason (optional): Reason for rewinding the orchestration instance
  • connection-string-setting (省略可能): 使用するストレージ接続文字列を含むアプリケーション設定の名前。connection-string-setting (optional): Name of the application setting containing the storage connection string to use. 既定では、AzureWebJobsStorage です。The default is AzureWebJobsStorage.
  • task-hub-name (省略可能): 使用する持続的なタスク ハブの名前。task-hub-name (optional): Name of the Durable task hub to use. 既定では、DurableFunctionsHub です。The default is DurableFunctionsHub. これは、durableTask:HubName を使用して host.json 内で設定することもできます。It can also be set in host.json via durableTask:HubName.
func durable rewind --id 0ab8c55a66644d68a3a8b220b12d209c --reason "Orchestrator failed and needs to be revived."

インスタンスの履歴を消去するPurge Instance History

注意

PurgeInstanceHistoryAsync API は現在、C# でのみ使用できます。The PurgeInstanceHistoryAsync API is currently available only for C#. これは、今後のリリースで JavaScript に追加される予定です。It will be added to JavaScript in an upcoming release.

オーケストレーションの履歴は、PurgeInstanceHistoryAsync を使用して消去できます。Orchestration history can be purged by using PurgeInstanceHistoryAsync. この機能により、オーケストレーションに関連付けられているすべてのデータ (Azure Table の行とサイズの大きいメッセージ BLOB (存在する場合)) が削除されます。The functionality will remove all the data associated with an orchestration - Azure Table rows and large message blobs if they exist. このメソッドには 2 つのオーバーロードがあります。The method has two overloads. 1 つ目は、オーケストレーション インスタンスの ID によって履歴を消去します。The first one purges history by orchestration instance's ID:

[FunctionName("PurgeInstanceHistory")]
public static Task Run(
    [OrchestrationClient] DurableOrchestrationClient client,
    [ManualTrigger] string instanceId)
{
    return client.PurgeInstanceHistoryAsync(instanceId);
}

2 番目の例では、指定した時間間隔後に完了したすべてのオーケストレーション インスタンスの履歴を消去する、タイマーによってトリガーされる関数を示します。The second example shows a timer-triggered function that purges the history for all orchestration instances that completed after the specified time interval. この場合は、30 日以上前に完了したすべてのインスタンスのデータが削除されます。In this case, it will remove data for all instances completed 30 or more days ago. これは、1 日 1 回、午前 12 時に実行するようにスケジュールされています。It is scheduled to run once per day at 12 AM:

[FunctionName("PurgeInstanceHistory")]
public static Task Run(
    [OrchestrationClient] DurableOrchestrationClient client,
    [TimerTrigger("0 0 12 * * *")]TimerInfo myTimer)
{
    return client.PurgeInstanceHistoryAsync(
                    DateTime.MinValue,
                    DateTime.UtcNow.AddDays(-30),  
                    new List<OrchestrationStatus>
                    {
                        OrchestrationStatus.Completed
                    });
}

注意

パラメーターとして期間を受け入れる PurgeInstanceHistory オーバーロードでは、ランタイムの状態が完了、終了、失敗のいずれかであるオーケストレーション インスタンスだけが処理されます。The PurgeInstanceHistory overload accepting time period as parameter will process only orchestration instances in one of the runtime status - Completed, Terminated, or Failed.

Core Tools を使用するUsing Core Tools

Core Toolsdurable purge-history コマンドを使用して、オーケストレーション インスタンスの履歴を消去することができます。It is possible to purge an orchestration instance's history using the Core Tools durable purge-history command. 上記の 2 つ目の C# の例と同様に、指定した時間間隔中に作成されたすべてのオーケストレーション インスタンスの履歴が消去されます。Similar to the second C# example above, it purges the history for all orchestration instances created during a specified time interval. 消去されるインスタンスをランタイムの状態でさらにフィルター処理できます。The instances purged can be further filtered by runtime status. コマンドにはいくつかのパラメーターがあります。The command has several parameters:

  • created-after (省略可能): この日付/時刻 (UTC) の後に作成されたインスタンスの履歴を消去します。created-after (optional): Purge the history of instances created after this date/time (UTC). ISO 8601 形式の日時が受け入れられます。ISO 8601 formatted datetimes accepted.
  • created-before (省略可能): この日付/時刻 (UTC) の前に作成されたインスタンスの履歴を消去します。created-before (optional): Purge the history of instances created before this date/time (UTC). ISO 8601 形式の日時が受け入れられます。ISO 8601 formatted datetimes accepted.
  • runtime-status (省略可能): 状態がこれら ('実行中'、'完了' など) に一致するインスタンスの履歴を消去します。runtime-status (optional): Purge the history of instances whose status match these ('running', 'completed', etc.). 複数の (スペースで区切られた) 状態を指定できます。Can provide multiple (space separated) statuses.
  • connection-string-setting (省略可能): 使用するストレージ接続文字列を含むアプリケーション設定の名前。connection-string-setting (optional): Name of the application setting containing the storage connection string to use. 既定では、AzureWebJobsStorage です。The default is AzureWebJobsStorage.
  • task-hub-name (省略可能): 使用する持続的なタスク ハブの名前。task-hub-name (optional): Name of the Durable task hub to use. 既定では、DurableFunctionsHub です。The default is DurableFunctionsHub. これは、durableTask:HubName を使用して host.json 内で設定することもできます。It can also be set in host.json via durableTask:HubName.

次のコマンドでは、2018 年 11 月 14 日午後 7 時 35 分 (UTC) より前に作成されたすべての失敗したインスタンスの履歴が削除されます。The following command would delete the history of all failed instances created before November 14, 2018 at 7:35 PM (UTC).

func durable purge-history --created-before 2018-11-14T19:35:00.0000000Z --runtime-status failed

タスク ハブを削除するDeleting a Task Hub

Core Toolsdurable delete-task-hub コマンドを使用して、特定のタスク ハブに関連付けられているすべてのストレージ成果物を削除できます。Using the Core Tools durable delete-task-hub command, it is possible to delete all storage artifacts associated with a particular task hub. これには、Azure ストレージのテーブル、キュー、BLOB が含まれます。This includes Azure storage tables, queues, and blobs. コマンドには 2 つのパラメーターがあります。The command has two parameters:

  • connection-string-setting (省略可能): 使用するストレージ接続文字列を含むアプリケーション設定の名前。connection-string-setting (optional): Name of the application setting containing the storage connection string to use. 既定では、AzureWebJobsStorage です。The default is AzureWebJobsStorage.
  • task-hub-name (省略可能): 使用する持続的なタスク ハブの名前。task-hub-name (optional): Name of the Durable task hub to use. 既定では、DurableFunctionsHub です。The default is DurableFunctionsHub. これは、durableTask:HubName を使用して host.json 内で設定することもできます。It can also be set in host.json via durableTask:HubName.

次のコマンドでは、'UserTest' タスク ハブに関連付けられている Azure ストレージ データがすべて削除されます。The following command would delete all Azure storage data associated with the 'UserTest' task hub.

func durable delete-task-hub --task-hub-name UserTest

次の手順Next steps