Taak hubs in Durable Functions (Azure Functions)Task hubs in Durable Functions (Azure Functions)

Een Task hub in Durable functions is een logische container voor Azure storage resources die worden gebruikt voor Orchestrations.A task hub in Durable Functions is a logical container for Azure Storage resources that are used for orchestrations. Orchestrator-en activiteit functies kunnen alleen communiceren wanneer ze tot dezelfde taak hub behoren.Orchestrator and activity functions can only interact with each other when they belong to the same task hub.

Als meerdere functie-apps een opslag account delen, moet elke functie-app worden geconfigureerd met de naam van een afzonderlijke taak hub.If multiple function apps share a storage account, each function app must be configured with a separate task hub name. Een opslag account kan meerdere taak hubs bevatten.A storage account can contain multiple task hubs. In het volgende diagram ziet u één taak-hub per functie-app in gedeelde en toegewezen opslag accounts.The following diagram illustrates one task hub per function app in shared and dedicated storage accounts.

Diagram met gedeelde en speciale opslag accounts.

Azure Storage resourcesAzure Storage resources

Een taak-hub bestaat uit de volgende opslag resources:A task hub consists of the following storage resources:

  • Een of meer controle wachtrijen.One or more control queues.
  • Eén wachtrij voor werk items.One work-item queue.
  • Eén geschiedenis tabel.One history table.
  • Tabel met één exemplaar.One instances table.
  • Eén opslag container met een of meer lease-blobs.One storage container containing one or more lease blobs.
  • Een opslag container met grote bericht payloads, indien van toepassing.A storage container containing large message payloads, if applicable.

Al deze resources worden automatisch gemaakt in de standaard Azure Storage-account wanneer orchestrator-, entity-of activity-functies worden uitgevoerd of zijn gepland om te worden uitgevoerd.All of these resources are created automatically in the default Azure Storage account when orchestrator, entity, or activity functions run or are scheduled to run. In het artikel prestaties en schalen wordt uitgelegd hoe deze bronnen worden gebruikt.The Performance and Scale article explains how these resources are used.

Namen van taak hubsTask hub names

Taak hubs worden geïdentificeerd aan de hand van een naam die is gedeclareerd in het host. json -bestand, zoals wordt weer gegeven in het volgende voor beeld:Task hubs are identified by a name that is declared in the host.json file, as shown in the following example:

host. json (functions 2,0)host.json (Functions 2.0)

{
  "version": "2.0",
  "extensions": {
    "durableTask": {
      "hubName": "MyTaskHub"
    }
  }
}

host. json (functions 1. x)host.json (Functions 1.x)

{
  "durableTask": {
    "hubName": "MyTaskHub"
  }
}

Taak hubs kunnen ook worden geconfigureerd met behulp van app-instellingen, zoals wordt weer gegeven in het volgende host.json voorbeeld bestand:Task hubs can also be configured using app settings, as shown in the following host.json example file:

host. json (functions 1,0)host.json (Functions 1.0)

{
  "durableTask": {
    "hubName": "%MyTaskHub%"
  }
}

host. json (functions 2,0)host.json (Functions 2.0)

{
  "version": "2.0",
  "extensions": {
    "durableTask": {
      "hubName": "%MyTaskHub%"
    }
  }
}

De naam van de taak-hub wordt ingesteld op de waarde van de app-instelling MyTaskHub.The task hub name will be set to the value of the MyTaskHub app setting. In de volgende local.settings.json ziet u hoe u de instelling MyTaskHub kunt definiëren als samplehubname:The following local.settings.json demonstrates how to define the MyTaskHub setting as samplehubname:

{
  "IsEncrypted": false,
  "Values": {
    "MyTaskHub" : "samplehubname"
  }
}

De volgende code is een vooraf gecompileerd C# voor beeld van het schrijven van een functie die gebruikmaakt van de Orchestration-client binding om te werken met een task hub die is geconfigureerd als een app-instelling:The following code is a precompiled C# example of how to write a function that uses the orchestration client binding to work with a task hub that is configured as an App Setting:

C#C#

[FunctionName("HttpStart")]
public static async Task<HttpResponseMessage> Run(
    [HttpTrigger(AuthorizationLevel.Function, methods: "post", Route = "orchestrators/{functionName}")] HttpRequestMessage req,
    [OrchestrationClient(TaskHub = "%MyTaskHub%")] IDurableOrchestrationClient 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}'.");

    return starter.CreateCheckStatusResponse(req, instanceId);
}

Notitie

Het vorige C# voor beeld is voor Durable functions 2. x.The previous C# example is for Durable Functions 2.x. Voor Durable Functions 1. x moet u DurableOrchestrationContext gebruiken in plaats van IDurableOrchestrationContext.For Durable Functions 1.x, you must use DurableOrchestrationContext instead of IDurableOrchestrationContext. Zie het artikel Durable functions versies voor meer informatie over de verschillen tussen versies.For more information about the differences between versions, see the Durable Functions versions article.

JavaScriptJavaScript

De eigenschap task hub in het function.json-bestand is ingesteld via de app-instelling:The task hub property in the function.json file is set via App Setting:

{
    "name": "input",
    "taskHub": "%MyTaskHub%",
    "type": "orchestrationClient",
    "direction": "in"
}

Namen van taak hubs moeten beginnen met een letter en mogen alleen letters en cijfers bevatten.Task hub names must start with a letter and consist of only letters and numbers. Als u niets opgeeft, wordt de naam van een standaard taak-hub gebruikt, zoals wordt weer gegeven in de volgende tabel:If not specified, a default task hub name will be used as shown in the following table:

Duurzame extensie versieDurable extension version Naam van de standaard taak-hubDefault task hub name
2.x2.x Bij implementatie in azure wordt de naam van de taak-hub afgeleid van de naam van de functie-app.When deployed in Azure, the task hub name is derived from the name of the function app. Bij uitvoering buiten Azure wordt de standaard naam van de taak hub TestHubName.When running outside of Azure, the default task hub name is TestHubName.
1.x1.x De standaard naam van de taak hub voor alle omgevingen is DurableFunctionsHub.The default task hub name for all environments is DurableFunctionsHub.

Zie het artikel Durable functions versies voor meer informatie over de verschillen tussen extensies.For more information about the differences between extension versions, see the Durable Functions versions article.

Notitie

De naam is wat een taak hub onderscheidt van een andere als er meerdere taak hubs in een gedeeld opslag account zijn.The name is what differentiates one task hub from another when there are multiple task hubs in a shared storage account. Als u meerdere functie-apps hebt die een gedeeld opslag account delen, moet u expliciet verschillende namen configureren voor elke Task hub in de host. json -bestanden.If you have multiple function apps sharing a shared storage account, you must explicitly configure different names for each task hub in the host.json files. Anders kunnen de meerdere functie-apps met elkaar concurreren voor berichten. Dit kan leiden tot ongedefinieerd gedrag, met inbegrip van indelingen die onverwacht zijn vastgelopen in de Pending of Running status.Otherwise the multiple function apps will compete with each other for messages, which could result in undefined behavior, including orchestrations getting unexpectedly "stuck" in the Pending or Running state.

Volgende stappenNext steps